C语言 为什么在我第一次在代码中插入项目后我的代码中出现分段错误


/*Linked list insertin deletion display

我已经声明了一个结构节点 *head=NULL 的全局变量;

linkedlistlinkedlistlinkedlisr=tlinkedlistlinkedlistlinkedlist

linkedlistlinkedlistlinkedlisr=tlinkedlistlinkedlistlinkedlist

void insert(int x)//i guess the problem might be that temp is pointing to head as well as new  
{
struct node *temp=NULL;
struct node *new;
new=(struct node*)malloc(sizeof(struct node));
new->data=x;
new->next=NULL;
if(head==NULL)
{
head=new;
temp=head;
}
else
{
temp->next=new;
temp=new;
}
}
temp->next=new

很可能是你的问题。在函数的顶部,您将 temp 设置为 NULL,并使用->运算符取消引用空指针。

head==NULL情况下的代码是可以的。但在else情况下,您需要正确插入节点。

下面的代码将在列表末尾插入节点。

void insert(int x)
{
struct node *temp=NULL;
struct node *newnode;
newnode= malloc(sizeof(struct node));
newnode->data=x;
newnode->next=NULL;
if(head==NULL)
{
head=newnode;
}
else
{
temp = head;
while (temp->next != NULL)
temp = temp->next;
temp->next=newnode;
}
}

如果要在列表的开头插入,则需要修改else条件,如下所示。

else
{
newnode->next=head;
head = newnode;
}

另外,以下指针

  1. 避免使用new,因为它是C++中的关键字
  2. 不要投射malloc的结果

相关内容

  • 没有找到相关文章

最新更新