无法遍历链表,无法弄清楚我的方法有什么问题?

加甘拉杰迪普·辛格
    #include<iostream>
    using namespace std;

    struct node{
      int data;                                 // structure for each node of list
      node *p;
    };

    class LinkedList{
      node *head,*tail;
      public:
        LinkedList(){                           //empty LinkedList used for overall structure
            head=NULL;
            tail=NULL;
        }
        void addnode(int x);
        void show();
    };

    void LinkedList::addnode(int x){
     node *temp=new node;
     temp->data=x;
     temp->p=NULL;
     if(head==NULL){                //linkedList is empty therefore temp is both head and tail now
        temp=head;
        temp=tail;
    }
    else{
        tail->p=temp;
        tail=temp;
    }   
   }

    void LinkedList::show(){
       node *temp;
       temp=head;
       while(temp!=NULL){
         cout<<endl<<temp->data<<endl;
         temp=temp->p;
       }
    }

    int main(){
     LinkedList l;
     cout<<"Welcome to Linkedlist creation\n";
     int choice;
     cout<<"To add a node press 1,\nTo view your list press 2\n";
     cin>>choice;
      switch(choice){
        case 1:
            int data;
            cout<<"Enter the data to be added: ";
            cin>>data;
            l.addnode(data);
            break;
        case 2:
            l.show();
    }
  }

请告诉我我的代码有什么问题..!我需要了解我的方法有什么问题......我提到了许多其他来源,大多数和我的一样,但是 show() 根本不起作用......请不要直接转到其他帖子或请告诉在这样做之前我的错误..

编辑:对不起大家的错字,我的意思是相同的 if(head==null) 而不是 =; 我检查了我的代码是否相同,它只是在这里错了,仍然是同样的问题

麦克猫

LinkedList::addnode有以下错误:

  • 中的条件if(head=NULL){是错误的。=是 C++ 中的赋值运算符,它将设置headNULL并将评估为false这将有tail->p=temp;tail = NULL它会导致分段错误。
  • temp=head; temp=tail;也是错的。它正在用某些东西覆盖指向新创建节点的指针,从而造成内存泄漏。

功能应该是:

    void LinkedList::addnode(int x){
     node *temp=new node;
     temp->data=x;
     temp->p=NULL;
     if(head==NULL){             //linkedList is empty therefore temp is both head and tail now
        head=temp;
        tail=temp;
     }
     else{
         tail->p=temp;
         tail=temp;
     }
    }

此外,您的班级LinkedList不遵循The Rule of Three,因此在复制对象时会复制指针,这可能会导致麻烦。当你更多地开发你的程序时要小心。

还有一点是你main()只能做节点插入和打印之一,所以你不能LinkedList在添加节点的情况下打印您可能需要这样的循环:

int main(){
 LinkedList l;
 cout<<"Welcome to Linkedlist creation\n";
 int choice;
 for(;;){
  cout<<"To add a node press 1,\nTo view your list press 2\n";
  if(!(cin>>choice))break; // exit when reading failed
  switch(choice){
    case 1:
        int data;
        cout<<"Enter the data to be added: ";
        cin>>data;
        l.addnode(data);
        break;
    case 2:
        l.show();
  }
 }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法弄清楚我的条件有什么问题

无法弄清楚我的代码出了什么问题

无法弄清楚我的二进制加法算法有什么问题

Powershell 帮助。无法弄清楚出了什么问题

无法弄清楚我的SQL语法出了什么问题

无法弄清楚我的合并排序代码出了什么问题

我无法弄清楚这段代码出了什么问题

无法弄清楚这段代码有什么问题 [python 3x]

ajax调用有问题,无法弄清楚是什么

我的应用程序在android studio中崩溃了,在查看日志时我无法弄清楚出了什么问题

尝试将信息输入数据库时,无法弄清楚我的 PHP 代码出了什么问题

我想弄清楚我的代码有什么问题

Java网络,无法弄清楚多线程服务器出了什么问题

Mysql:无法弄清楚此LEFT JOIN查询出了什么问题

这个SqlTransaction已经完成;它不再可用。- 无法弄清楚出了什么问题

Axios.get 返回状态代码 400 无法弄清楚出了什么问题(SODAapi)

无法弄清楚为什么我的代码无法呈现

我无法通过语句弄清楚语法问题

我无法弄清楚这个单一的脚本问题

我需要这个来将 c 转换为 f 但我一直收到 NaN 作为答案无法弄清楚出了什么问题

我无法弄清楚为什么在头文件中调用方法时出现未定义的引用问题

我的公式有问题,我无法弄清楚哪个公式和位置

我无法弄清楚这条线是做什么的

无法弄清楚为什么这给了我TypeError

无法弄清楚为什么我收到UnboundLocalError

有人可以帮我弄清楚合并排序的实现有什么问题吗?

我无法弄清楚这个查询

我无法弄清楚这些错误

无法弄清楚为什么我的文字没有变成绿色