题目描述
(线性表)试编写一个算法,在带表头结点的单链表中寻找第i个结点。若找到,则函数返回第i个结点的地址;若找不到,则函数返回0。
输入
2 3 4 5 6 7 8 9
1
输出
0
样例输入
2 3 4 5 6 7 8 9
10
样例输出
0
参考代码
#include <stdio.h>
#include <stdlib.h>
typedef struct shu
{
int date;
struct shu *link;
}
SHU;
SHU *creat()
{
SHU *head,*p,*q;
head=p=q=malloc(sizeof(SHU));
scanf("%d",&p->date);
while(getchar()!='n')
{
p=malloc(sizeof(SHU));
scanf("%d",&p->date);
q->link=p;
q=p;
}
q->link=NULL;
return head;
}
int play(SHU *head,int n)
{
SHU *p=head;
int i=1;
while(p!=NULL)
{
if(i++==n)
break;
p=p->link;
}
if(p==NULL)
return 0;
else
return n-1;
}
int main()
{
int n;
SHU *head;
head=creat();
scanf("%d",&n);
printf("%d",play(head,n));
return 0;
}
解析
暂无