数据结构单链表的建立和输出
下面是我所建立的简单的单链表,输入4个数字到结点,输出链表,但是,不能正常编译运行,有一部分错误,求指出错误之处,并帮我分析一下为什么错误!!!
#include<stdio.h>
#include<alloc.h>
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *link;
} LNode,*LinkList;
LinkList creat(int n)
{ LinkList p,r,list=NULL;
ElemType a;
int i;
for(i=1;i<=n;i++)
{scanf("%d",&a);
p=(LinkList)malloc(sizeof(LNode));
p->data=a;
p->link=NULL;
if(list==NULL)
list=p;
else
r->link=p;
r=p;
}
return(list);
}
void output(LinkList list)
{ LinkList p=list;
while(p!=NULL) {
printf("%d\n",p->data);
p=p->link;
}
}
void main()
{
int n=4;
creat(n);
output();
}
****************************************
劳烦大家动动手,动动脑,帮我解决一下,感激不尽!!
[解决办法]
帮你改了下!
[code=C/C++][#include<stdio.h>
#include<malloc.h> //应该是malloc.h 或者是stdlib.htypedef int ElemType;
typedef struct node
{
ElemType data;
struct node *link;
} LNode,*LinkList;
LinkList creat(int n)
{
LinkList p,r,list=NULL;
ElemType a;
int i;
for(i=1;i<=n;i++)
{
scanf("%d",&a);
p=(LinkList)malloc(sizeof(LNode));
p->data=a;
p->link=NULL;
if(list==NULL)
list=p;
else
r->link=p;
r=p;
}
return(list);
}
void output(LinkList list)
{
LinkList p=list;
while(p!=NULL) {
printf("%d\n",p->data);
p=p->link;
}
}
void main()
{
LNode *p;
int n=4;
p=creat(n); //LinkList creat(int n),有返回值
output(p);
}
/code]
[解决办法]
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *link;
} LNode,*LinkList;
LinkList creat(int n)
{ LinkList p,r,L;
L=(LinkList)malloc(sizeof(LNode));
L=NULL;
r=L;
ElemType a;
int i;
for(i=1;i<=n;i++)
{ scanf("%d",&a);
p=(LinkList)malloc(sizeof(LNode));
p->data=a;
p->link=NULL;
if(L==NULL)
L=p;
else
r->link=p;
r=p;
}
return(L);
}
void output(LinkList L)
{ LinkList p=L;
while(p!=NULL)
{
printf("%d\n",p->data);
p=p->link;
}
}
void main()
{
LinkList L; int n=4;
L=creat(n);
output(L);}