单链表的查找程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); } 执行结果如下: