单链表完整算法.doc

单链表完整算法.doc

ID:55766491

大小:34.00 KB

页数:19页

时间:2020-06-06

单链表完整算法.doc_第1页
单链表完整算法.doc_第2页
单链表完整算法.doc_第3页
单链表完整算法.doc_第4页
单链表完整算法.doc_第5页
资源描述:

《单链表完整算法.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、//包含头文件#include#include#include//为结点数据类型和结构体类型起别名typedefintdatatype;typedefstructLinkNode{datatypedata;//数据域structLinkNode*next;//指针域存放下一个结点的地址}LNode,*LinkList;LinkListL;//单链表的头指针//1.用头插法创建单链表LinkListCreateListHead(intn){//创建头结点LNode*L=(LNode*)malloc(sizeof

2、(LNode));L->next=NULL;//设置指针域为空LinkListp;//p指向新结点for(inti=n;i>0;i--)//先插入最后一个结点,插入次序与逻辑次序相反{//生成新结点p=(LNode*)malloc(sizeof(LNode));//从键盘输入新结点的值printf("请输入要插入第%d结点的值:",i);scanf("%d",&p->data);p->next=L->next;//让L原来的后继结点成为p的后继结点L->next=p;//p成为L新的后继结点}returnL;//返回单链表的头指针}//2.用尾插法创建单链表Li

3、nkListCreateListTail(intn){//生成头结点L=(LNode*)malloc(sizeof(LNode));L->next=NULL;//设置指针域为空//p指向新结点,q指向尾结点LinkListp,q=L;//依次在末尾插入n个结点for(inti=1;i<=n;i++){//生成新结点pp=(LNode*)malloc(sizeof(LNode));//从键盘输入新结点的值printf("请输入第%d个结点的值:",i);scanf("%d",&p->data);p->next=NULL;//新结点(也是尾结点)的指针域为空//把新

4、结点链接到单链表的末尾q->next=p;//让q指向新的尾结点q=p;}returnL;//返回单链表的头指针}//3.显示单链表中的元素值voidShowList(LinkListL){if(L==NULL

5、

6、L->next==NULL){printf("单链表为空。");return;}LinkListp=L;//指针p首先指向头结点while(p->next!=NULL)//当指针p没有到达尾结点时{p=p->next;//指针后移一个结点printf("%d",p->data);//输出结点数据域的值}}//4.求单链表的长度(结点的个数)intG

7、etLength(LinkListL){LNode*p=L;/*p先指向头结点*/intn=0;//n代表除头结点外的结点个数while(p->next!=NULL){//当指针p没有到达尾结点时p=p->next;//指针后挪一个结点n++;//结点个数+1}returnn;//返回结点的个数}//5.按序号查找:在单链表中查找第i个结点LinkListLocateElemByIndex(LinkListL,inti){LinkListp=L;//指针p先指向头结点,负责后移intj=0;//j用来计算到达结点的序号if(L==NULL

8、

9、L->next==NUL

10、L){printf("单链表为空。");returnNULL;}//p指针后移的条件:p不是尾结点,而且jnext!=NULL&&jnext;//p指针后移j++;//j递增}if(j==i)//找到第i个结点时:j==i{returnp;//返回第i个结点的地址}else{returnNULL;//第i个结点不存在,返回NULL}}//6.按值查找:在单链表中查找值为e的结点LinkListLocateElemByData(LinkListL,datatypee){LinkListp=L;//指针p先指向头结点,负责后移

11、if(L==NULL

12、

13、L->next==NULL){printf("单链表为空。");returnNULL;}//p指针后移的条件:p不是尾结点,而且p->data!=ewhile(p->next!=NULL&&p->data!=e){p=p->next;//p指针后移}//找到值为e的结点if(p->data==e){returnp;//返回结点的地址}else{returnNULL;//结点不存在,返回NULL}}//7.在单链表的第i个位置插入值为e的结点(在第i-1个结点后面插入新结点)voidInsertByIndex(LinkListL,int

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

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

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