【发布时间】:2022-01-07 10:39:11
【问题描述】:
我尝试修改代码几次,但无法在代码中找到错误。我的程序正在运行,但我很难将节点添加到正确的位置。
#include<iostream>
using namespace std;
struct Node
{
int data;
struct Node *next;
}*HEAD=NULL;
void create(int a[],int n)
{
struct Node *p;
cout<<"Enter the number of elements of LL you want to display "<<endl;
cin>>n;
for(int i=0;i<n;i++)
{
if(i==0)
{
HEAD=new Node;
p=HEAD;
p->data=a[0];
}
else
{
p->next=new Node;
p=p->next;
p->data=a[i];
}
p->next=NULL;
}
}
void insertion(struct Node *p,int pos,int x)
{
struct Node *t;
int i,n;
if(pos<0||pos>n)
cout<<"Invalid position "<<endl;
t=new Node;
t->data=x;
// t->next==NULL;
if(pos==0)
{
t->next=HEAD;
HEAD=t;
}
else
for(i=0;i<pos-1;i++)
{
p=p->next;
t->next=p->next;
p->next=t;
}
}
void display(struct Node *HEAD)
{
struct Node *p;
p=HEAD;
while(p!=NULL)
{
cout<<p->data;
p=p->next;
}
}
int main()
{
struct Node *temp;
int n;
cout<<"enter the value of n "<<endl;
cin>>n;
int a[n];
cout<<"Array elements are "<<endl;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
create(a,n);
insertion(HEAD,1,15);
display(HEAD);
}
【问题讨论】:
-
首先,请尽早测试,经常测试。不要在没有构建(启用额外的警告并且您将其视为错误)和测试的情况下编写大部分代码。这使得更容易理解问题出现的时间和地点,以及调试代码(例如,在监视变量及其值的同时,使用调试器逐语句逐句执行代码)。调试时的另一个提示:使用铅笔和纸来可视化您拥有的结构、节点和链接。将节点绘制为正方形,将链接绘制为箭头,在对它们进行操作时擦除和重绘箭头。
-
仅供参考,在 C++ 中,声明变量或参数时不需要关键字
struct。 -
@Rohan Shahi 此代码 sn-p int i,n; if(posn) 没有意义,因为变量 n 未初始化。
-
-
既然
n已经作为参数提供,并且已经在主程序中输入了,为什么还要输入n?
标签: c++ algorithm data-structures linked-list