刚学链表,这是一个带头结点链表,能编译但是运行不了,是哪里写错了。
#include <stdio.h>
#include <stdlib.h>
#include <mem.h>
#define Null 0
typedef struct node
{
int date;
struct node* next;
}*point,Node;
int main()
{
int temp;
point H,p,pre;
H = (point)malloc(sizeof(Node));
printf("请输入数字");
scanf("%d",&temp);
while (temp != 0)
{
p = (point)malloc(sizeof(Node));
p->date = temp;
pre->next = p;
pre = p;
printf("请输入数字");
scanf("%d", &temp);
}
pre->next = Null;
p = H->next;
while (p != Null)
{
printf("%d", p->next);
p = p->next;
}
return 0;
}
pre->next = p;会崩溃,pre没有赋初始值
在while前,pre = H;
printf("%d", p->next);改为
printf("%d", p->date);
另外,date是日期,data才是数据的意思
#include <stdio.h>
#include <stdlib.h>
typedef struct _node
{
int data;
struct _node *next;
} node;
int main()
{
node *head, *prev, *p;
head = (node *)malloc(sizeof(node));
head->next = NULL;
prev = head;
while (1)
{
int data;
printf("请输入数字: ");
if (scanf("%d", &data) != 1)
break;
if (data == 0)
break;
p = (node *)malloc(sizeof(node));
p->data = data;
p->next = NULL;
prev->next = p;
prev = p;
}
p = head->next;
while (p)
{
printf("%d ", p->data);
p = p->next;
}
p = head;
while (p)
{
node *q = p;
p = p->next;
free(q);
}
printf("\n");
return 0;
}