插入单个链表中的特定位置

时间:2014-03-10 14:54:50

标签: c++ linked-list

实际上我正在尝试在特定位置插入一个节点,但是当我运行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;
  }

}

1 个答案:

答案 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;