一个关于线性表的问题
#include<stdio.h>#include<stdlib.h>
#define NULL 0
typedef struct list
{
int data;
struct list *next;
}list;
list *creatlist(list *L,int n)//创建空链表,第一个函数
{
list *p;
int i;
L=(list *)malloc(sizeof(list));
L->next=NULL;
p=(list *)malloc(sizeof(list));
for(i=0;i<n;i++)
{
if(p==NULL)
{
printf("申请失败!");
exit(0);
}
p->next=L->next;
L->next=p;
}
return L;
}
Inputdata(list *L,int n)//向空链表输入数据,第二个函数
{
list *head;
int i;
for(i=0;i<n;i++)
{
L=L->next;
scanf("%d",&L->data);
}
}
int compare(list *L,int e)//用e和链表中的元素比较,第一个和e相等的元素返回,第三个函数
{
int a,data;
list *head=NULL;
while(L!=NULL)
{
if(L->data==e)
{
return e;
}
else
{
L=L->next;
}
}
return 0;
}
int getelem(list *L,int i)//返回链表中的第i个元素,第四个函数
{
int e,data,j;
list *head;
if(i<1)
{
printf("输入的数错误!");
exit(0);
}
for(j=1;j<i;j++)
{
L=L->next;
}
L=L->next;
e=L->data;
return e;
}
上面的是个头文件
#include"01.h"
main()
{
int n,data,e,a,i,b;
list *L=NULL;
printf("请输入线性表的长度:\n");
scanf("%d",&n);
L=creatlist(L,n);
Inputdata(L,n);
printf("请输入e:");
scanf("%d",&e);
a=compare(L,e);
printf("a=%d\n",a);
printf("请输入i:");
scanf("%d",&i);
b=getelem(L,i);
printf("b=%d\n",b);
}
整个程序语法没错,但第三第四个函数输出的结果错误。。。望高手赐教。。。