资源描述:
《单链表的插入删除和逆序排列》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单链表的插入删除和逆序排列#include"stdio.h"#include"stdlib.h"#defineok1#defineerror-1typedefstructLNode{intdata;structLNode*next;}LNode,*linklist;intcreatelist(linklist*L,intn){inti;linklistp,m;*L=(linklist)malloc(sizeof(LNode));(*L)->next=NULL;m=*L;for(i=n;i>0;--i){p=(linklist)malloc(sizeof(LNode));scanf(
2、"%d",&p->data);p->next=m->next;m->next=p;m=m->next;}returnok;}intlistinsert(linklistL,inti,inte){intj;linklistp,s;p=L;j=0;while(!p
3、
4、jnext;++j;}if(!p
5、
6、j>i-1)returnerror;s=(linklist)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;returnok;}intlistdelete(linklistL,inti,int*e)
7、{linklistp,q;intj=0;p=L;while(p->next&&jnext;++j;}if(!(p->next)
8、
9、j>i-1)returnerror;q=p->next;p->next=q->next;*e=q->data;free(q);returnok;}intprintlist(linklistL,intn){inti;linklistp;p=(linklist)malloc(sizeof(structLNode));p=L->next;for(i=0;idata);p=p->next;}
10、returnok;}intinvert(linklistL){linklistp=L->next,s;L->next=NULL;while(p){s=p->next;p->next=L->next;L->next=p;p=s;}returnok;}main(){intj,o,n,m,e;linklistL;printf("请输入单链表的长度:");scanf("%d",&n);printf("请输入单链表的元素:");createlist(&L,n);puts("********************************");puts("构建的单链表是:"
11、);printlist(L,n);puts("********************************");printf("请输入要插入的位置j和要插入的元素o:");scanf("%d%d",&j,&o);listinsert(L,j,o);puts("********************************");puts("插入后的的单链表是:");printlist(L,n+1);puts("********************************");printf("请输入所要删除的元素位置:");scanf("%
12、d",&m);listdelete(L,m,&e);puts("********************************");puts("删除后的的单链表是:");printlist(L,n);printf("删除的数字是:");printf("%d",e);puts("********************************");invert(L);puts("********************************");printf("单链表的逆序排列为:");printlist(L,n);puts("********
13、************************");}1