谁能告诉我为什么我的程序在无限的循环中进行

Can anyone tell me why my program is going in infinite Loop?

本文关键字:循环 无限 告诉我 为什么 我的 程序      更新时间:2023-10-16

为什么我的代码给出无限循环,我已经多次检查了我的代码,但我不知道错误在哪里,但是我的输出在无限的循环中为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(数据,位置(有2个问题。

对于双重链接列表中的第一个节点,一旦头部和尾巴指向相同的节点,我们就完成了。位置无关紧要,当没有节点时。

因此,在"形成链接列表"之后停止添加逻辑。添加其他并将所有代码移动到其中,它可以按预期工作。

代码应该能够断言head-> prev和尾巴 -> null。

同时添加一个新节点时,您不想为2x节点分配内存。

不要致电N1。