数据结构C语言版 线性表的单链表存储结构表示和实现.doc

数据结构C语言版 线性表的单链表存储结构表示和实现.doc

ID:50119915

大小:117.50 KB

页数:20页

时间:2020-03-04

数据结构C语言版 线性表的单链表存储结构表示和实现.doc_第1页
数据结构C语言版 线性表的单链表存储结构表示和实现.doc_第2页
数据结构C语言版 线性表的单链表存储结构表示和实现.doc_第3页
数据结构C语言版 线性表的单链表存储结构表示和实现.doc_第4页
数据结构C语言版 线性表的单链表存储结构表示和实现.doc_第5页
资源描述:

《数据结构C语言版 线性表的单链表存储结构表示和实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.#include#include#include/*数据结构C语言版线性表的单链表存储结构表示和实现P28-31编译环境:Dev-C++4.9.9.2日期:2011年2月10日*/typedefintElemType;//线性表的单链表存储结构typedefstructLNode{ElemTypedata;//数据域structLNode*next;//指针域}LNode,*LinkList;//typedefstructLNode*LinkList;//另一种定义Link

2、List的方法//构造一个空的线性表LintInitList(LinkList*L){/*产生头结点L,并使L指向此头结点,头节点的数据域为空,不放数据的。void*malloc(size_t)这里对返回值进行强制类型转换了,返回值是指向空类型的指针类型。*/(*L)=(LinkList)malloc(sizeof(structLNode));if(!(*L))exit(0);//存储分配失败(*L)->next=NULL;//指针域为空return1;}//销毁线性表L,将包括头结点在内的所有元素释放其存储空间。intDestro

3、yList(LinkList*L){LinkListq;//由于单链表的每一个元素是单独分配的,所以要一个一个的进行释放页脚.while(*L){q=(*L)->next;free(*L);//释放*L=q;}return1;}/*将L重置为空表,即将链表中除头结点外的所有元素释放其存储空间,但是将头结点指针域置空,这和销毁有区别哦。不改变L,所以不需要用指针。*/intClearList(LinkListL){LinkListp,q;p=L->next;//p指向第一个结点while(p)//没到表尾则继续循环{q=p->next

4、;free(p);//释放空间p=q;}L->next=NULL;//头结点指针域为空,链表成了一个空表return1;}//若L为空表(根据头结点L->next来判断,为空则是空表),则返回1,//否则返回0。intListEmpty(LinkListL){if(L->next)//非空return0;elsereturn1;}//返回L中数据元素个数。intListLength(LinkListL){页脚.inti=0;LinkListp=L->next;//p指向第一个结点while(p)//没到表尾,则继续循环{i++;p=

5、p->next;}returni;}//算法2.8P29//L为带头结点的单链表的头指针。当第i个元素存在时,其值赋给e并//返回1,否则返回0。intGetElem(LinkListL,inti,ElemType*e){intj=1;//j为计数器LinkListp=L->next;//p指向第一个结点while(p&&jnext;j++;}if(!p

6、

7、j>i)//第i个元素不存在return0;*e=p->data;//取第i个元素return1;}//返回L中

8、第1个与e满足关系compare()的数据元素的位序。//若这样的数据元素不存在,则返回值为0intLocateElem(LinkListL,ElemTypee,int(*compare)(ElemType,ElemType)){inti=0;LinkListp=L->next;while(p)//将链表的每一个元素进行对比{i++;if(compare(p->data,e))//找到这样的数据元素returni;p=p->next;}页脚.return0;}//若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,

9、//返回1;否则操作失败,pre_e无定义,返回-1intPriorElem(LinkListL,ElemTypecur_e,ElemType*pre_e){LinkListq,p=L->next;//p指向第一个结点while(p->next)//p所指结点有后继{q=p->next;//q为p的后继if(q->data==cur_e){*pre_e=p->data;return1;}p=q;//p向后移}return-1;}//若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,//返回1;否则操作失败,n

10、ext_e无定义,返回-1intNextElem(LinkListL,ElemTypecur_e,ElemType*next_e){LinkListp=L->next;//p指向第一个结点while(p->next)//p所指结点有后

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

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

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