按升序将整数插入链表

时间:2013-11-22 00:09:28

标签: c++ linked-list

我正在尝试按升序将新元素插入到链表中,我的代码用于输入3,1,9,7,5输出1,1,1,1,1,1但是我想要的输出是1,3,5,7,9

head实际上是类List的私有实例变量,这是一个成员函数

它被称为:

List a;  a.insertInOrder(3); a.insertInOrder(1); a.insertInOrder(9); a.insertInOrder(7); insertInOrder(5);

输出为1,1,1,1,1

          void List::insertInOrder( int data) {

              Node *newNode = new Node; 
               newNode->data=data;

              if(head == null || head->data > data) { 
                 newNode->next = head; 
                 head = newNode; 
              }
              else{ 
                 Node *cur = head; 

                 while(cur->next != null && current->next->data < data) 
                   cur = cur->next; 
                 newNode->next = cur->next;
                 cur->next = newNode;
              } 
         }

2 个答案:

答案 0 :(得分:1)

似乎大多有效,但是:

       while(cur->next != null && current->next->data < data)

这里你在一个子句中引用“cur”,在另一个子句中引用“current”。 “当前'似乎不存在,但也许你有全局变量?

但是,即使这样也会搞砸订单,所以我怀疑错误是在你的输出代码中,而不是你的排序代码。

答案 1 :(得分:-1)

您没有递增nextC,因此您的while循环正在将data与一个数字进行比较。 cur没有做任何事情,因为您没有像条件nextC那样在条件中使用它。

while(cur->next != null && nextC->data < data) //nextC->data is set only once
                   cur = cur->next; //cur incremented, but for what?