LintCode 第466题 链表节点计数

来源:互联网 发布:spaceman软件 编辑:程序博客网 时间:2024/06/15 17:51

基本思路:

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;}

原创粉丝点击