基本思路:
1.创建带头结点的单链表,头结点的数据域value为0
2.遍历链表,过滤掉头结点,不做计数
实现代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef struct LinkListNode {
int value;
LinkListNode * nextNode;
}LinkListNode, *LinkList;
LinkListNode * creatLinkList() {
LinkListNode * headNode = (LinkListNode *)malloc(sizeof(LinkListNode));
headNode->value = 0;
headNode->nextNode = (LinkListNode *)malloc(sizeof(LinkListNode));
LinkListNode * tempNode = headNode->nextNode;
while (tempNode != NULL) {
int value;
cin >>value;
tempNode->value = value;
if (value == -1) {
tempNode->nextNode = NULL;
} else {
tempNode->nextNode = (LinkListNode *)malloc(sizeof(LinkListNode));
}
tempNode = tempNode->nextNode;
}
return headNode;
}
int countNodeNumber(LinkListNode * headNode) {
int count = 0;
LinkListNode * tempNode = headNode->nextNode;
//过滤掉首节点 不计数
while (tempNode->value != -1) {
count++;
tempNode = tempNode->nextNode;
}
return count;
}
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Hello, World!\n";
LinkListNode * headNode = creatLinkList();
int linkListNodeNumber = countNodeNumber(headNode);
cout << linkListNodeNumber;
return 0;
}