在链表末尾添加一个节点

Posted

技术标签:

【中文标题】在链表末尾添加一个节点【英文标题】:adding a node at the end of a linked list 【发布时间】:2015-03-13 05:19:33 【问题描述】:

我的程序在向链接它添加新节点时有点停滞不前,它应该被添加到列表的末尾,但我尽我所能但仍然有一个解决方案,希望如果你们中的任何人可以帮助我 提前谢谢你;

这是一段代码

   #include <iostream>

   using namespace std;



  struct node 
        int data;
        node* next;
              ;

        node* head;
       void insert(int x);
       void numInsert();
       void numSearch();

     int main()
    

     head=NULL;
int x,n;

cout <<"How many number? \n";
cin >>n;

for (int i=0; i<n; i++)
    cout <<"Enter Number \n";
    cin >> x;





node* newNode;
newNode = new node();
newNode->data=x;
newNode->next=head;
head=newNode;
/*
NewNode->next=NULL;
if (head !=NULL)
    NewNode->next=head;

else
    head=NewNode;
*/



     int num;
     cout<<"what number do you want to insert in the list \n";
     cin>>num;

     node *nNode;
     nNode = new node();
     nNode->data=num;
     nNode->next=NULL;

     node *prevNode;
     node *currNode;

     prevNode=NULL;
     currNode=NULL;

    
     node* nNode= new node;
     nNode->data= num;
     nNode->next= NULL;

     currNode=NULL; prevNode=NULL;
    for(currNode=head; currNode != NULL; currNode= currNode->next)
    
    if (newNode->data <= currNode->data)
    
        break;
    
    prevNode = currNode;
    
    newNode->next=prevNode->next;
    prevNode->next=newNode;
    

    return 0;
    

任何时候我运行它,到达一个点并且停止工作,请帮助我,任务今天到期,我不知道如何正确解决它

【问题讨论】:

欢迎来到 ***。您是否尝试过调试它,找出它为什么不起作用? 您是否考虑过使用一个类并将您的代码打包到函数中,而不是全部扔到main 中? @Qwaiks 必须在列表末尾插入新值的函数的声明是什么? 调试了它但没有工作@mjuarez,是的,我尝试使用类并打包代码它从来没有真正掌握它,我无法真正理解我在做什么,实际上我是 C++ 编程的新手,请在这里帮助我 【参考方案1】:
#include <iostream>
using namespace std;
struct node 
int data;
        node* next;
;
    node* head;
    node* tail;
    void insert(int x);
    void numInsert();
    void numSearch();

    int main()
    
    head=NULL;
    tail = NULL;
    int x,n;

    cout <<"How many number? \n";
    cin >>n;

    for (int i=0; i<n; i++)
        cout <<"Enter Number \n";
        cin >> x;
        if(head==NULL)
            head = new node();
            head->data = x;
            head->next = NULL;
            tail = head;
        else
            node* newNode;
            newNode = new node();
            newNode->data=x;
            newNode->next = NULL;
            tail->next = newNode;
            tail = tail->next;
        
    

    cout << "Linked List :" << "\n";
    node* trav = head;
    for (int i=0; i<n; i++)
        cout << (trav->data) << '\n';
        trav = trav->next;
    

    int num;
    cout<<"what number do you want to insert in the list \n";
    cin>>num;

    if(head==NULL)
        head = new node();
        head->data = num;
        head->next = NULL;
        tail = head;
    else
        node* newNode;
        newNode = new node();
        newNode->data=num;
        newNode->next = NULL;
        tail->next = newNode;
        tail = tail->next;
    

    cout << "Linked List :" << "\n";
    trav = head;
    while(trav != NULL)
        cout << (trav->data) << '\n';
        trav = trav->next;
    

    return 0;
    

【讨论】:

你想在最后添加元素。这段代码就可以了。 可能比仅仅粘贴一大块固定版本更有用。 很酷,但我认为在链表中它应该被排序然后节点被添加到列表的末尾或者它不必那样工作 这取决于你想如何使用LinkedList。如果要对其进行排序,只需添加 for 循环即可比较值 @Qwaiks @LukePeterson,我还没有粘贴大量代码。我刚刚粘贴了他的修改代码。他没有添加元素。所以我只是在那里进行了更改。

以上是关于在链表末尾添加一个节点的主要内容,如果未能解决你的问题,请参考以下文章

在链表中添加节点时使用双指针的原因是啥?

使用java在链表中插入节点

链表----在链表中添加元素详解--使用链表的虚拟头结点

如何在链表中的另一个节点之间插入一个节点?

在链表C++中的某个位置插入节点

C 中在单链表末尾添加节点的函数不起作用