单链表的查找
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef int datatype;
datatype flag=-1;
typedef struct node
{
datatype data; //数据域
struct node *next; //指针域
} LNode, * linkList;
linkList Creat_linkList()
{
linkList L,s,r;
L=(linkList)malloc(sizeof(LNode));
L->next=NULL;//创建头结点
r=L;
int a;
while(scanf("%d",&a))
{
if(a==-1)
break;
s=(linkList)malloc(sizeof(LNode));
s->data=a;
r->next=s;
r=s;
}
r->next=NULL;
return L;
}
LNode *Get_linkList(linkList L, int i)
{
//待补全,实现在单链表L中查找第i个元素结点,找到返回其指针,否则返回空
int j=0;//j置为0(即头结点的序号为0)
LNode *p=L;//p指向头结点
if (i<=0)
{
return 0;
}
while (j<i && p!=NULL)
{
j++;
p=p->next;
}
if (p==NULL)
{
return 0;
}
else
{
return p;
}
}
void Output_linkList(linkList L) //输出函数
{
LNode *p=L;
while (p->next!= NULL)
{
printf("%d;",p->next->data);
p=p->next;
}
}
//查找的
void main()
{
int n;
LNode *p;
linkList L=Creat_linkList();
scanf("%d",&n);
p=Get_linkList(L,n);
if(p)printf("%d",p->data);
else printf("%d",-1);
}