创建单链表不知道什么地方出错,编译能通过,但是在运行的时候发生错误。
#include <stdio.h>#include <stdlib.h>
typedef struct link
{
int data;
struct link *next;
}linklist;
linklist *creatlist();
linklist *creatlist_end();
void printlinklist(linklist *h);
int main()
{
int choice;
linklist *head; /* head=(linklist *)malloc (sizeof(linklist)); */
while (1)
{
printf("单链表的创建\n");
printf("1.使用头插入法创建单链表\n");
printf("2.使用未插入法创建单链表\n");
printf("3.链表输出\n");
printf("4.退出\n");
printf("5.做出选择:\n");
scanf("%d",&choice);
switch (choice)
{
case 1: head=creatlist(); break;
case 2: head=creatlist_end(); break;
case 3: printlinklist(head);
case 4: return 0; break;
default: break;
}
}
return 1;
}
linklist *creatlist()
{
linklist *head,*p;
int i;
int a[10];
head->next=NULL;
printf("依次输入数据:\n");
for(i=0;i<10;i++)
scanf("%d",a[i]);
for(i=0;i<10;i++)
{
p=(linklist*)malloc(sizeof(linklist));
p->data=a[i];
p->next=head;
head=p;
}
return head;
}
linklist *creatlist_end()
{
linklist *head,*p,*e;
int a[10],i;
head->next=NULL;
e=head;
printf("input ten datas");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
p=(linklist*)malloc(sizeof(linklist));
p->next=a[i];
e->next=p;
e=p;
}
e->next=NULL;
return head;
}
void printlinklist(linklist *h)
{
linklist *p;
p=h;
while(p!=NULL)
{
printf("%4d",p->data);
p=p->next;
}
}