这个链接列表有什么错误的计数

时间:2013-11-10 23:52:31

标签: c++

以下代码崩溃了,我不确定为什么。试图计算在下面的链表中找到整数的次数。但是,xcode一直在说主要的int count = 0是否打破了一个线程?

 #include <iostream>  
 using namespace std;

struct Node {
  int val;
  Node *next;
};


  int countNum (Node *head, int key);
  Node* cons (int x, Node* p);

   int main()
   {

     Node *head = (1,cons(2,cons(2,(cons(4,(cons(5,nullptr)))))));

     int counts=0;

     counts= countNum(head,2);

     cout<< counts<< head;

     return 0;
 }

  Node* cons (int x, Node* p){

        Node *q=new Node;
        q->val=x;
        q->next=p;

    return p;
 }

 int countNum (Node *head, int key) {
         int count=0;

        if (head==nullptr)
             return 0;

         Node *follow=head;

          while (follow!=nullptr) {

                if(follow->val==key)
                   count++;

                follow=follow->next;

          }

            cout<<count;
           return count;
    }

2 个答案:

答案 0 :(得分:2)

使用Node * head = cons (1,cons(2,cons(2,(cons(4,(cons(5,nullptr)))))));

答案 1 :(得分:0)

我认为你想要返回一个指向当前节点而不是下一个节点的指针。我也认为你不能这样做:

Node *head = (1, ptrToNextNode);

这样的事可能有用:

struct Node *head = malloc(sizeof (struct Node));
head->value = 1;
head->next = cons(2,cons(2,(cons(4,(cons(5,nullptr))))));

...

Node* cons (int x, Node* p)
{

    Node *q=new Node;
    q->val=x;
    q->next=p;

    return q;
}