【问题标题】:adding nodes into singly-linked list将节点添加到单链表中
【发布时间】:2013-02-10 14:34:24
【问题描述】:

我正在尝试学习链表。我刚刚编写了一个说明链表的程序,但它似乎不起作用。代码如下:

#include <iostream>
using namespace std;

struct node
{
    int data;
    node* next;
};

int main(int argc, const char * argv[])
{
    node* trav;
    node* root;
    root = new node;

    trav = root;

    trav -> data = 4;
    trav -> next = new node;

    trav -> data = 5;
    trav -> next = new node;

    trav -> data = 6;
    trav -> next = 0;
    trav = root;

    while (trav!=0) {
        std::cout<<trav->data;
        trav=trav->next;
    }
}

我希望 root 指向第一个节点,但是当我们进一步进入程序时,它似乎复制了trav 的数据。知道有什么问题吗?
谢谢

【问题讨论】:

    标签: c++ linked-list singly-linked-list


    【解决方案1】:

    在这段代码中:

    trav = root;
    
    trav -> data = 4;
    trav -> next = new node;
    
    trav -> data = 5;
    trav -> next = new node;
    

    您没有更改trav 指针,这意味着您正在覆盖其成员。通过调用trav-&gt;next = new node; 创建新节点后,您应该通过调用“移动”到下一个节点:

    trav = trav-> next;
    

    【讨论】:

      【解决方案2】:

      你永远不会这样做

      trav = trav -> next;
      

      当您填写列表时。你不要在列表中移动,只是继续修改根目录。

      【讨论】:

        【解决方案3】:

        trav -&gt; next = new node 之后,您缺少trav = trav -&gt; next;换句话说,您创建了一个新节点,但您从未真正“跨步”到那里。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-07
          • 1970-01-01
          • 1970-01-01
          • 2019-02-27
          • 1970-01-01
          • 2021-06-28
          相关资源
          最近更新 更多