我正在尝试使用带有标题节点的链表实现队列。该程序正在编译,但它给出了运行时错误。你能告诉我应该改变什么吗?
显示功能很好。
#include <stdio.h>
#include <stdlib.h>
#define MALLOC(p,n,type) \
p=(type*)malloc(n*sizeof(type)); \
struct node
{
int info;
struct node *link;
};
typedef struct node *NODE;
NODE insert_rear(int item,NODE head)
{
NODE temp;
MALLOC(temp,1,struct node);
temp->info=item;
temp->link=NULL;
if(head==NULL)
{
head->link=temp;
return head;
}
NODE cur;
while(cur->link!=NULL)
{
cur=cur->link;
}
cur->link=temp;
return head;
}
NODE delete_front(NODE head)
{
if(head==NULL)
{
printf("Empty");
return head;
}
NODE temp,first;
first=head->link;
head->link=first->link;
printf("Item deleted is %d",first->info);
free(first);
return head;
}
答案 0 :(得分:1)
这条线对你有意义吗?
if(head==NULL)
{
head->link=temp;
重新措辞,如果head
为NULL,请继续取消引用 已知 无效指针。
当然你会得到一个段错!
<强> PS 强>
我通过编写main
函数找到了这一点,最重要的是,在调试器中跟踪代码
您必须在调试器中跟踪代码。
我使用的main
:
int main ()
{
NODE head = NULL;
head = insert_rear(3, head); // <= Breakpoint here. Step Into
getchar();
return 0;
}