这是一个单链表程序,实现的是计算链表长度,能够编译,不报错,不警告,就是在运行时有错
#include <stdio.h>
#include <conio.h>
#define flag 0
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}LNode,*LinkList;
LinkList creat_LinkList();
int length_LinkList(LinkList L);
void output(LinkList L);
main()
{
LinkList L;
int l;
L=creat_LinkList();
output(L);
l=length_LinkList(L);
printf("length\n",l);
getch();
}
LinkList creat_LinkList()
{
LinkList L=NULL;
LNode *s,*R=NULL;
int x;
scanf("%d",&x);
while(x!=flag)
{
s=(LNode *)malloc(sizeof(LNode));
L=L->next;
if(L==NULL)
L=s;
else
R->next=s;
R=s;
scanf("%d",&x);
}
if(R!=NULL)
R->next=NULL;
return L;
}
int length_LinkList(LinkList L) //不带头节点 计算长度
{
LNode *p=L;
int j;
if(p==NULL)
return 0;
j=1;
while(p->next)
{
p=p->next;
j++;
}
return j;
}
void output(LinkList L)
{
while(L!=NULL)
{
L=L->next;
printf("%d\t",L->data);
}
}