单链表的实现(原创)

单链表的实现(原创)

ID:39554561

大小:55.00 KB

页数:8页

时间:2019-07-06

单链表的实现(原创)_第1页
单链表的实现(原创)_第2页
单链表的实现(原创)_第3页
单链表的实现(原创)_第4页
单链表的实现(原创)_第5页
资源描述:

《单链表的实现(原创)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、初始化,插入,删除,查找,求表长、排序、删除相同的元素、显示表。#include#include//exit()#include#includetypedefintElemType;typedefstructLNode{intdata;//数据structLNode*next;//指针}LNode,*SLink;SLinkInitList_L();//创建一个带头结点的空链表,L为指向头结点的指针SLinkCreateList_L();//逆位序输入n个元素的值,建立带头结点的单链表Lvo

2、idReverse_L(SLinkL);//就地逆置voidGetElemList_L(SLinkL,ElemTypee);//查找,当第i个元素存在时,其值赋给evoidInsertList_L(SLinkL,inti,ElemTypee);//在指针指向第i个元素前插入新的元素eintDeleteList_L(SLink&L,inti,ElemType&e);//删除第i个元素voidArrangeList_L(SLink&L);//排序voidpurgeList_L(SLinkL);//删除表中相同的数intLengthList_L(SLinkL);//求表长

3、voidTraverseList_L(SLinkL);//显示表intmenu_select();//菜单函数voidmain(){SLinkL;inti,m;//定义常量ElemTypee;//定义常量for(;;){switch(menu_select()){case1:L=InitList_L();//创建空表break;case2:L=CreateList_L();//创建表Reverse_L(L);break;case3:printf("请输入要查找的元素:");//查找scanf("%d",&e);GetElemList_L(L,e);break;cas

4、e4:printf("请输入要插入的元素的位置:");//在指针指向第i个元素前插入新的元素escanf("%d",&i);printf("请输入插入的元素:");scanf("%d",&e);InsertList_L(L,i,e);break;case5:printf("请输入要删除元素的位序:");//删除第i个元素scanf("%d",&i);m=DeleteList_L(L,i,e);if(m){printf("删除的第%d个元素是%d:",i,m);printf("");}elseprintf("删除的位置不合法!");break;case6:Ar

5、rangeList_L(L);break;case7:purgeList_L(L);//删除表中相同元素Reverse_L(L);break;case8:i=LengthList_L(L);//求表长if(i)printf("表长为:%d",i);elseprintf("表为空!");break;case9:TraverseList_L(L);//显示表break;case10://退出exit(1);}}}//构造一个空的线性表LSLinkInitList_L()//创建一个带头结点的空链表,L为指向头结点的指针{SLinkL;L=newLNode;//为

6、表L分配空间if(!L)exit(1);//存储空间分配失败L->next=NULL;returnL;}/////////////////////////////////////////////////////创建链表SLinkCreateList_L()//输入n个元素的值,建立带头结点的单链表L{inti,n,t;SLinkp,L;printf("输入数据长度");scanf("%d",&n);//扫描长度L=newLNode;//为单链表分配空间L->next=NULL;//先建立一个带头结点的单链表printf("请输入元素:");for(i=n;i>0;-

7、-i){p=newLNode;//生成新结点scanf("%d",&t);//扫描元素值p->data=t;p->next=L->next;L->next=p;}returnL;}//就地逆置voidReverse_L(SLinkL)//链表的就地逆置{SLinkp,q,s;//定义指针p=L->next;q=p->next;s=q->next;p->next=NULL;//指针指向链表头和链表尾while(s->next){q->next=p;p=q;//交换q=s;s=s->next;//把L的元素逐个插入新表表头}q->next=p;s->next=q;L

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。