资源描述
/链表操作:建立、插入、删除、查找、倒置、删除等基本操作/喜洋洋制作ttincludestdio.httincludestdlib.htypedefstructLNodeintdata;structLNode*next;LNode,*Llist;LNode*creat_head();/创建个空表voidcreat_list(LNodeint);/创建一个长度为n的八、ru亠int,int);/插入一个元素voidinsert_list(LNode*,intdelete_list(LNode*,intfound_list(LNode*,int);/删除一个元素int);/链表查询voidreverse(LNode/倒置整个链表;/删除整个链表voiddelete_whole(LNode*)voidprint_list(LNode*);/打印链表mainOLNode*head;intn,n2;intx,i;intb;chartempi,temp2;head=creat_head();printfC请输入链表的节点个数n=);scanf(%d,&n);printf(,zn请输入数据:n“);creat_list(head,n):/创建链表print_list(head);printf(z,nkLkLzjsz|szjszjszjsjsyjszjsyjsyjszp%zjsyjsx|szjs|szjszjsn);printf(z,n下面进行链表插入兀素n“);printf(z,n请输入您需要插入的兀素x=“);scanf(d,&x);printf(z,n请输入即将插入的位置i=“);scanf(d,&i);insert_list(head,x,i):/插入兀素print_list(head);vy!-f.,*|*4*Y*斗;iL,|,|4|i|!;*!打卜T*n);printf(n下面进行链表删除兀素n“);printf(n请输入艮卩将删除元素的位置:i=“);scanf(%cT,&i);b=delete_list(head,i);/删除兀素print_list(head);printf(nn成功删除兀素:%d,b);printf(“nv!kL%!vL1*zjsyjsp%n);printf(n下面进行链表查询n“);printf(n请输入即将查询的兀素:x=“);scanf(%d,&n2);if(found_list(head,n2)0)/链表查询printf(”找到了,在第%d的位置上”,found_list(head,n2);elseprintf(没有找到!);printf(”nlxvjkLkL%LvjvtvLvtx!kLkLvtkLxtkLn“);printfCn是否倒置整个链表?Y/Nn);fflush(stdin);scanf(%c,&tempi);iffV=templ)/侄lj置链表reverse(head);print_list(head);printf(z,nkLkLkLvt%fxx!v!xkLv!kLyjszjyjz|sjsyjszjyjsz|yjszjyjsn);printf(zzn是否删除整个链表?Y/Nn);fflush(stdin);scanf(c,&temp2);ifCr=temp2)/删除链表delete_whole(head);printfCn成功删除整个链表n);/创建一个空链表LNode*creat_head()LNode*p;p=(Llist)malloc(sizeof(LNode);if(NULL=p)printf(,z内存申请失败!“);elsereturn(p);)/创建一个长度为n的线性链表voidcreat_list(LNode*head,intn)LNode*p,*q;inti;p=head;for(i=l;inext=NULL;p-next=q;P二q;/插入一个元素voidinsert_list(LNode*head,intx,inti)intj=0;LNode*p,*s;p=head;while(p!=NULL)&(jnext;j+;辻(p二二NULL)exit(0);s=(Llist)malloc(sizeof(LNode);辻(NULL二二p)printfC内存申请失败!“);elsesdata=x;p-next=s;/删除一个元素intdelete_list(LNodeinti)*head,LNode*p,*q;intj=0;intx;p=head;wh订e(p!=NULL)&(jnext;j+;if(p=NULL)exit(0);q=p-next;p-next二q-next;x=q-data;free(q);q=NULL;return(x);/删除整个链表voiddelete_whole(LNode*head)LNode*p,*q;p=head;wh订e(p!=NULL)q=p-next;free(p);P=Q;/倒置链表voidreverse(LNode*head)LNode*p,*s,*t;p二head;s=p-next;while(s-next!二NULL)/主要置换过程next=p:p=s;s=t;snext=p;head-next-next=NULL:/片攵尾head-next=s;/赋头/打印链表voidprint_list(LNode*head)1LNode*p;for(p=head-next;p!=NULL;)(printf(/z%dz/,p-data):p=p-next;/链表查询intfoundist(LNode*head,intn)LNode*p;inti=l;for(p=head-next;p!=NULL;)(if(n=p-data)(returni;i+;p=p-next;if(NULL=p)return0;
展开阅读全文