从链表中第 n 个位置删除节点的函数给出分段错误
function to delete a node from linked list at nth position giving segmentation fault
void deleteat(int pos)
{
struct node *temp,*temp1;
//temp=(struct node*)malloc(sizeof(struct node));
temp1=temp=head;
int i;
if(pos==0)
{
temp=head->next;
free(head);
head=temp;
}
else
{
for(i=0;i<pos;i++)
{
temp1=temp;
temp=temp->next;
}
temp1->next=temp->next;
temp->next=NULL;
free(temp);
}
}
// Fucntion calls in the main
deleteat(4);
deleteat(1);
deleteat(6);
我在在线法官上提交了类似的代码,但它被接受了,而 运行 我的 linux 机器上的相同代码给出了分段错误(核心转储)。我知道这个问题已经被问过很多次了,但是我在我的代码中找不到错误。
当您迭代列表时,您不会检查 temp 或 temp1 是否是有效指针。其中一些可能为空
void deleteat(int pos)
{
struct node *temp,*temp1;
//temp=(struct node*)malloc(sizeof(struct node));
temp1=temp=head;
int i;
if(pos==0)
{
temp=head->next;
free(head);
head=temp;
}
else
{
for(i=0;i<pos;i++)
{
temp1=temp;
temp=temp->next;
}
temp1->next=temp->next;
temp->next=NULL;
free(temp);
}
}
// Fucntion calls in the main
deleteat(4);
deleteat(1);
deleteat(6);
我在在线法官上提交了类似的代码,但它被接受了,而 运行 我的 linux 机器上的相同代码给出了分段错误(核心转储)。我知道这个问题已经被问过很多次了,但是我在我的代码中找不到错误。
当您迭代列表时,您不会检查 temp 或 temp1 是否是有效指针。其中一些可能为空