您的位置:首页 > 理论基础 > 数据结构算法

LintCode 第466题 链表节点计数

2017-12-01 13:47 363 查看
基本思路:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构与算法