這是我從鏈接列表中刪除節點的代碼。按索引從鏈接列表中刪除節點
vec_store
保存seq
和size
。變量seq
包含向量和一個指針。
由於某種原因,else if(i<s->size-1)
不起作用,這是最後一個條件。
任何人都可以解決這個問題嗎?順便說一句,這是C的代碼。
void delete_vec(vec_store s, int i)
{
if (i<0 || s->size-1<i)
{
printf("Cannot delete vector because index %d is out of bounds\n",i);
}
else if (i==0)
{
node temp;
temp = s->seq;
s->seq = s->seq->next;
s->size--;
free(temp);
}
else if(i==s->size-1)
{
node temp1, temp2;
//temp1 = malloc(sizeof (node));
temp2 = malloc(sizeof (node));
temp1=s->seq;
if(temp1->next==NULL)
{
free(temp1);
s->seq=NULL;
s->size--;
printf("s->size-1\n");
}
else
{
while (temp1->next!=NULL)
{
temp2 = temp1;
temp1 = temp1->next;
}
free(temp1);
temp2->next=NULL;
s->size--;
printf("s->size-1 2\n");
}
}
else if(i<s->size-1)
{
node temp1,temp2;
int j;
temp1=s->seq;
temp2 = malloc(sizeof (struct node_record));
for(j=0;j<=i-1;j++)
{
temp2=temp1;
temp1 = temp1->next;
}
free(temp1);
temp2->next=NULL;
s->size--;
}
}
請正確縮進。 – 2009-12-07 02:31:51
好消息:我們剛剛收到一批新空白,您可以儘可能多地使用! – caf 2009-12-07 02:37:58
不正確的縮進應該會產生編譯器錯誤,它會燒傷我的眼睛。 – Dave 2009-12-07 02:38:29