将整数按升序插入链表



我正试图将一个新元素按升序插入链表,我输入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;
              } 
         }

看起来大多有效,但:

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

在这里,您在一个子句中指"cur",在另一个子句则指"current"。"当前"似乎不存在,但也许你有全局?

但是,即使这样也会打乱排序,所以我怀疑错误是在您的输出代码中,而不是排序代码中。

您没有递增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?

相关内容

  • 没有找到相关文章

最新更新