链表 locatelist问题,程序有错,大侠们帮忙分析一下吧

2024-11-23 05:38:10
推荐回答(2个)
回答1:

#include
#include

typedef struct lnode
{
int data;
struct lnode *next;
}lnode,*linklist;

void creatlist(linklist *l,int n)
{
int i;
linklist p;
(*l)=(lnode*)malloc(sizeof(lnode));
(*l)->next=NULL;
for(i=n;i>0;i--)
{
p=(linklist)malloc(sizeof(lnode));
scanf("%d",&p->data);
p->next=(*l)->next;
(*l)->next=p;
}
}

int locate(linklist l,int x)
{
linklist p;
int n=1;
p=l->next; //l是有头指针的链表
while(p->next!=NULL)
{
if(p->data==x)
break;
p=p->next;
n++;
}
return n;
}

void display(linklist l)
{
linklist p;
p=l->next; //l是有头指针的链表
while(p!=NULL)
{
printf("%3d",p->data);
p=p->next;
}
}

void main()
{
int n,x,s;
linklist L=NULL; //链表应该是链表指针,这样申请只能是一个节点
printf("请输入链表长度:\n");
scanf("%d",&n);
printf("链表赋值:\n");
creatlist(&L,n); //要想在函数中给变量申请空间,必须是变量的指针
display(L);
printf("请输入要查找的数:\n");
scanf("%d",&x);
s=locate(L,x);
printf("该数在链表中的位置:%d\n",s);
}

回答2:

printf("该数在链表中的位置:%d\n",s);