单链表的查找程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单链表的查找,程序如下:

#include<>

#include<>

#include<>

typedef struct node

{

int data;

struct node *next;

}LinkList;

LinkList *CreateList(int length)

{

LinkList *head,*p,*q;

head=(LinkList*)malloc(sizeof(node));

head->next =NULL;

q=head;

printf("******请输入链表中的%d个元素:\n",length);

for(int i=1;i<=length;i++)

{

p=(LinkList*)malloc (sizeof(node));

q->next=p;

p->next=NULL;

q=q->next ;

scanf("%d",&p->data);

}

return head;

}

void select_insert(LinkList *head)

{

int min=0;

int tmp=0;

LinkList *p,*q,*M;

p=q=M=head;

while(p->next!=NULL)

{

M=q=p->next;

min=q->data;

while(q!=NULL)

{

if(q->data

{

M=q;

min=q->data;

}

q=q->next;

}

if(p->next!=M)

{

tmp=p->next->data;

p->next->data=M->data;

M->data=tmp;

}

p=p->next;

}

}

locate(LinkList *head,int key)

{

int k=1;

LinkList *p;

p=head->next;

while((p!=NULL) && (p->data!=key))

{

p=p->next;

k++;

}

if(p==NULL) return NULL;

else return k;

}

void DisplayList(LinkList *L)

{

LinkList *p;

p=L->next;

while(p)

{

printf("%d ",p->data );

p=p->next;

}

printf("\n");

}

void main()

{

int len,num,n;

LinkList *L;

printf("******请输入你要创建链表的长度:");

scanf("%d",&len);

L=CreateList(len);

printf("******要查找的数为:");

scanf("%d",&num);

n=locate(L,num);

printf("*******要查找的数的在链表的第%d个位置.",n);

printf("\n*******排序后结果为:\n");

select_insert(L);

DisplayList(L);

}

执行结果如下:

相关文档
最新文档