线性表链接存储(单链表)操作的16种算法

线性表链接存储(单链表)操作的16种算法

ID:13710359

大小:64.50 KB

页数:9页

时间:2018-07-24

线性表链接存储(单链表)操作的16种算法_第1页
线性表链接存储(单链表)操作的16种算法_第2页
线性表链接存储(单链表)操作的16种算法_第3页
线性表链接存储(单链表)操作的16种算法_第4页
线性表链接存储(单链表)操作的16种算法_第5页
资源描述:

《线性表链接存储(单链表)操作的16种算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#defineNN12#defineMM20typedefintelemType;/************************************************************************//*以下是关于线性表链接存储(单链表)操作的16种算法*//************************************************************************/structsNode{/*定义单链表结点类型*/elemTypedata;s

2、tructsNode*next;};/*1.初始化线性表,即置单链表的表头指针为空*/voidinitList(structsNode**hl){*hl=NULL;}/*2.清除线性表L中的所有元素,即释放单链表L中所有的结点,使之成为一个空表*/voidclearList(structsNode**hl){/*cp和np分别作为指向两个相邻结点的指针*/structsNode*cp,*np;cp=*hl;/*遍历单链表,依次释放每个结点*/while(cp!=NULL){np=cp->next;/*保存下一个结点的指针*/free(cp);cp=np;}*hl=NULL;/*

3、置单链表的表头指针为空*/return;}/*3.返回单链表的长度*/intsizeList(structsNode*hl){intcount=0;/*用于统计结点的个数*/while(hl!=NULL){count++;hl=hl->next;}returncount;}/*4.检查单链表是否为空,若为空则返回1,否则返回0*/intemptyList(structsNode*hl){if(hl==NULL)return1;elsereturn0;}/*5.返回单链表中第pos个结点中的元素,若pos超出范围,则停止程序运行*/elemTypegetElem(structsN

4、ode*hl,intpos){inti=0;/*统计已遍历的结点个数*/if(pos<1){printf("pos值非法,退出运行!");exit(1);}while(hl!=NULL){i++;if(i==pos)break;hl=hl->next;}if(hl!=NULL)returnhl->data;else{printf("pos值非法,退出运行!");exit(1);}}/*6.遍历一个单链表*/voidtraverseList(structsNode*hl){while(hl!=NULL){printf("%5d",hl->data);hl=hl->next;}pr

5、intf("");return;}/*7.从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL*/elemType*findList(structsNode*hl,elemTypex){while(hl!=NULL){if(hl->data==x)return&hl->data;elsehl=hl->next;}returnNULL;}/*8.把单链表中第pos个结点的值修改为x的值,若修改成功返回1,否则返回0*/intupdatePosList(structsNode*hl,intpos,elemTypex){inti=0

6、;structsNode*p=hl;while(p!=NULL){/*查找第pos个结点*/i++;if(pos==i){break;}else{p=p->next;}}if(pos==i){p->data=x;return1;}elsereturn0;}/*9.向单链表的表头插入一个元素*/voidinsertFirstList(structsNode**hl,elemTypex){structsNode*newp;newp=malloc(sizeof(structsNode));if(newp==NULL){printf("内存分配失败,退出运行!");exit(1);}n

7、ewp->data=x;/*把x的值赋给新结点的data域*//*把新结点作为新的表头结点插入*/newp->next=*hl;*hl=newp;return;}/*10.向单链表的末尾添加一个元素*/voidinsertLastList(structsNode**hl,elemTypex){structsNode*newp;newp=malloc(sizeof(structsNode));if(newp==NULL){printf("内在分配失败,退出运行!");exit(1);}/*把x

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

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

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