用c++编写带头结点的单链表中统计结点个数的算法。
时间: 2024-03-14 22:43:56 浏览: 24
以下是用C++编写带头结点的单链表中统计结点个数的算法:
```c++
#include <iostream>
using namespace std;
typedef struct Node {
int data;
struct Node *next;
} ListNode, *LinkList;
void initList(LinkList &L) {
L = new ListNode;
L->next = NULL;
}
void createList(LinkList &L, int n) {
cout << "请输入" << n << "个数据元素: ";
for (int i = 1; i <= n; i++) {
int data;
cin >> data;
ListNode *newNode = new ListNode;
newNode->data = data;
newNode->next = L->next;
L->next = newNode;
}
}
int countList(LinkList L) {
int count = 0;
ListNode *p = L->next;
while (p) {
count++;
p = p->next;
}
return count;
}
int main() {
int n;
cout << "请输入数据元素个数n: ";
cin >> n;
LinkList L;
initList(L);
createList(L, n);
cout << "链表中的元素为: ";
for (ListNode *p = L->next; p; p = p->next) {
cout << p->data << " ";
}
cout << endl;
int count = countList(L);
cout << "链表中的结点个数为: " << count << endl;
return 0;
}
```
算法实现的思路是:从第一个结点开始依次遍历,每经过一个结点计数器加1,直到遍历到最后一个结点为止。最后返回计数器中存储的结点个数即为链表中结点的个数。