将节点添加到单链表中

adding nodes into singly-linked list

本文关键字:链表 单链表 节点 添加      更新时间:2023-10-16

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

#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的数据。知道怎么了吗
感谢

在此代码中:

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

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

trav = trav-> next;

您从不进行

trav = trav -> next;

当你填写清单时。您不在列表中移动,只需不断修改根。

您在trav -> next = new node之后缺少trav = trav -> next;换句话说,你创建了一个新的节点,但你从来没有真正"踏入"那里。