实际上我正在尝试在特定位置插入一个节点,但是当我运行insertloc()函数时它会出错
问题在于insertloc()函数
void linked :: insertloc()
{
int loc;
cout<<"\nEnter the location where you want to insert , starting from 1";
cin>>loc;
node *temp=new node;
node *temp1;
cout<<"\nEnter the info part";
cin>>temp->info;
loc-=1;
if(loc==0)
{
temp->next=start;
start=temp;
}
else
{
temp1=start;
for(int i=0;i<=loc-1;i++)
{
temp1=temp1->next;
cout<<temp->info<<" ";
}
temp->next=temp1->next;
temp1->next=temp;
}
}
答案 0 :(得分:2)
我认为问题是你不检查此代码段中temp1-&gt; next是否等于NULL
否则 {
temp1=start;
for(int i=0;i<=loc-1;i++)
{
temp1=temp1->next;
cout<<temp->info<<" ";
}
循环的条件也是无效的。它必须是i < loc-1
我会按照以下方式编写
temp1=start;
int i = 0;
while ( ++i < loc && temp1->next ) temp1 = temp1->next;
if ( i == loc )
{
temp->next = temp1->next;
temp1->next = temp;
}
我也会将该函数声明为
bool linked :: insertloc( size_t n );
所有要求输入我将从函数中排除的位置的代码
int loc;
cout<<"\nEnter the location where you want to insert , starting from 1";
cin>>loc;
node *temp=new node;
node *temp1;
cout<<"\nEnter the info part";
cin>>temp->info;