谁能告诉我为什么我的程序会无限循环?

桑巴贾因

为什么我的代码给出了一个无限循环,我已经多次检查我的代码,我不知道错误在哪里,但我的输出是无限循环中的 34,它是双向链表的代码!

所以请告诉我错误在哪里以及为什么我的循环在我的代码中显示 34 而不是 77 并且我的打印功能有问题吗?

#include<iostream>
using namespace std;
struct Node
{
    int data;
    Node *next;
    Node *prev;
};

class Linked
{
public:
    Node *head;
    Node *tail;
    Linked()
    {
        head=NULL;
        tail=NULL;
    }

    void add(int data,int position)
    {
        Node *n=new Node;
        Node *n1=new Node;
        n->data=data;
        n->next=NULL;
        n->prev=NULL;
        if(head==NULL)
        {
            head=n;
            tail=n;
            cout<<"Linked list formed"<<endl;
        }
        if(position==0)
        {
            head->prev=n;
            n->next=head;   
            head=n;
            cout<<"Linked list created"<<endl;

        }
        else
        {

            n1=head;
            int posi=position;
            while(posi>1)
            {
                n1=n1->next;
                posi--;
            }
            n->next=n1->next;
            n->next->prev=n;
            n1->next=n;
            n->prev=n1;
        }
    }


    void print()
    {
        Node *n=new Node;
        n=head;
        while(n!=NULL)
        {
            cout<<n->data<<endl;
            n=n->next;
        }
    }

};
int main()
{
    Linked l;

    l.add(34,0);
    l.add(77,0);
    // l.add(44,1);
    // l.add(90,2);
    l.print();
    return 0;
}
桑达拉詹

add (data,position) 有两个问题。

对于双向链表中的第一个节点,一旦 head 和 tail 指向同一个节点,我们就完成了。位置无所谓,当没有节点时。

所以停止在“链接列表形成”之后添加逻辑。添加 Else 并将其余所有代码移动到其中,它按预期工作。

代码应该能够断言 Head-> Prev 和 Tail-> next 为空。

此外,在添加单个新节点时,您不希望为 2x 节点分配内存。

不要为 n1 调用 new Node()。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

谁能告诉我为什么会提示两次?

来自分类Dev

谁能告诉我为什么这个无休止的 while 循环不能正常工作?

来自分类Dev

请谁能告诉我为什么输出是这样的?(蟒蛇)

来自分类Dev

谁能告诉我为什么该功能可以工作?

来自分类Dev

谁能告诉我为什么我的触发器不按我预期的方式工作?

来自分类Dev

为什么AWS会告诉我BucketAlreadyExists呢?

来自分类Dev

谁能告诉我为什么我的Bootstrap折叠按钮不起作用?

来自分类Dev

谁能告诉我为什么我的代码显示的pi值错误?

来自分类Dev

谁能告诉我为什么我得到IndexError:列表索引超出范围?

来自分类Dev

谁能告诉我为什么我的IFile总是返回null?

来自分类Dev

谁能告诉我为什么这个where子句没有给我结果?

来自分类Dev

谁能告诉我为什么我在python中使用gmtime和mktime,得到错误的结果?

来自分类Dev

谁能告诉我为什么我的计算器名称更改为中文?

来自分类Dev

谁能告诉我为什么我的Scrollspy无法正常工作?

来自分类Dev

谁能告诉我为什么我在此C代码中出现分段错误?

来自分类Dev

为什么我们使用此代码请谁能告诉我

来自分类Dev

谁能告诉我为什么我的段落链接无法点击?

来自分类Dev

谁能告诉我我的代码出了什么问题

来自分类Dev

谁能告诉我我的功能出了什么问题?

来自分类Dev

每当我在任何按钮(即UISegmentedControl按钮)外单击时,该按钮也会被单击。谁能告诉我为什么会这样?

来自分类Dev

谁能告诉我为什么它会在LINQ中发生?

来自分类Dev

谁能告诉我为什么这段代码不创建本地存储条目?

来自分类Dev

谁能告诉我为什么它显示“运行时错误”?

来自分类Dev

谁能告诉我为什么不创建正方形?

来自分类Dev

谁能告诉我为什么这个查询不起作用?

来自分类Dev

谁能告诉我为什么对对象Staff使用Null以及如何解决它

来自分类Dev

谁能告诉我为什么rsync无法从源子文件夹复制文件?

来自分类Dev

谁能告诉我为什么此文本不在Android Studio中居中?

来自分类Dev

谁能告诉我为什么这一次有效?

Related 相关文章

  1. 1

    谁能告诉我为什么会提示两次?

  2. 2

    谁能告诉我为什么这个无休止的 while 循环不能正常工作?

  3. 3

    请谁能告诉我为什么输出是这样的?(蟒蛇)

  4. 4

    谁能告诉我为什么该功能可以工作?

  5. 5

    谁能告诉我为什么我的触发器不按我预期的方式工作?

  6. 6

    为什么AWS会告诉我BucketAlreadyExists呢?

  7. 7

    谁能告诉我为什么我的Bootstrap折叠按钮不起作用?

  8. 8

    谁能告诉我为什么我的代码显示的pi值错误?

  9. 9

    谁能告诉我为什么我得到IndexError:列表索引超出范围?

  10. 10

    谁能告诉我为什么我的IFile总是返回null?

  11. 11

    谁能告诉我为什么这个where子句没有给我结果?

  12. 12

    谁能告诉我为什么我在python中使用gmtime和mktime,得到错误的结果?

  13. 13

    谁能告诉我为什么我的计算器名称更改为中文?

  14. 14

    谁能告诉我为什么我的Scrollspy无法正常工作?

  15. 15

    谁能告诉我为什么我在此C代码中出现分段错误?

  16. 16

    为什么我们使用此代码请谁能告诉我

  17. 17

    谁能告诉我为什么我的段落链接无法点击?

  18. 18

    谁能告诉我我的代码出了什么问题

  19. 19

    谁能告诉我我的功能出了什么问题?

  20. 20

    每当我在任何按钮(即UISegmentedControl按钮)外单击时,该按钮也会被单击。谁能告诉我为什么会这样?

  21. 21

    谁能告诉我为什么它会在LINQ中发生?

  22. 22

    谁能告诉我为什么这段代码不创建本地存储条目?

  23. 23

    谁能告诉我为什么它显示“运行时错误”?

  24. 24

    谁能告诉我为什么不创建正方形?

  25. 25

    谁能告诉我为什么这个查询不起作用?

  26. 26

    谁能告诉我为什么对对象Staff使用Null以及如何解决它

  27. 27

    谁能告诉我为什么rsync无法从源子文件夹复制文件?

  28. 28

    谁能告诉我为什么此文本不在Android Studio中居中?

  29. 29

    谁能告诉我为什么这一次有效?

热门标签

归档