数据结构-带头节点的单向链表

数据结构-带头节点的单向链表

ID:43699533

大小:380.00 KB

页数:42页

时间:2019-10-12

数据结构-带头节点的单向链表_第1页
数据结构-带头节点的单向链表_第2页
数据结构-带头节点的单向链表_第3页
数据结构-带头节点的单向链表_第4页
数据结构-带头节点的单向链表_第5页
资源描述:

《数据结构-带头节点的单向链表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、带头结点的单链表线性表(List)部分操作的实现小结和作业链式存储结构及实现顺序存储和链式存储的区别链式存储结构1、每个数据元素使用一个结点表示ai2、每个数据元素在物理存储空间可以不相邻3、数据元素之间的线性关系由指针链接保证a1a3a2链式存储结构的实现1、结点用一个结构表示typedefstructLNode{ElemTypedata;structLNode*next;}LNodeai2、定义一个指向LNode的指针类型typedefLNode*LinkList带头结点的单链表逻辑形态a1a2a3L空链表L头结点部分操作的实现InitList

2、(&L)DestroyList(&L)ListInsert(&L,i,e)ListDelete(&L,i,&e)ListMerge(La,Lb,&Lc)讨论ListLength(L)ListMerge(La,Lb,&Lc)GetItem(L,i,&e)讨论InitListStatusInitList(ListLink&L){node=(LNode*)malloc(sizeof(LNode));}return(OK);if(!node)return(OVERFLOW);node->next=NULL;L=node;LDestroyList分析:释放每

3、个结点占用的存储空间1、如果L不为空,则:1.1、p=L,L=L->next;1.2、释放p结点的空间a1a2a3Lp1.3、转12、如果L为空,结束DestroyListStatusDestroyList(LinkList&L){}while(L){p=L;L=L->next;free(p);}return(OK);ListLengtha1a2a3LpLpp=Lcount=0p->next==NULLcount=0pppcount=1count=2count=3ListLengthintListLength(LinkListL){count=0;

4、p=p->next;count++;}}return(count);p=L;while(p->next){GetItem1、p指向头结点2、重复p=p->next操作i次3、p指向了第i个元素pa1a2a3LGetItemStatusGetIem(LinkListL,inti,ElemType&e){p=L;j=0;while(jnext;j++;e=p->data;}}return(OK);if(i<1

5、

6、i>ListLength(L))return(ERROR);指向头结点循环i次ListInserta1a2a3Lp1、p指向

7、头结点2、如果p不为空,重复执行p=p-nexti-1次3、如果p不为空,p指向了第i-1个结点,执行插入操作ListInsertStatusListInsert(LinkList&L,inti,ElemTypee){p=L;j=0;while(jnext;j++;}if(i<1

8、

9、i>ListLength(L)+1)return(ERROR);ListInsert}node=(LNode*)malloc(sizeof(LNode));if(!node)return(OVERFLOW);node->data=e;node->n

10、ext=p->next;p->next=node;return(OK);ListDeletea1a2a3L1、p指向头结点2、如果p不为空,执行p=p->nexti-1次,使得p指向第i-1个结点。3、q=p->next,q指向第i个结点。4、执行删除操作ListDeleteStatusListDelete(LinkList&L,inti,ElemType&e){p=L;j=0;while(jnext;j++;}if(i<1

11、

12、i>ListLength(L))return(ERROR);q=p->next;e=q->data;

13、free(q);}return(OK);p->next=q->next;a1a2a3LListMerge原形StatusListMerge(LinkListLa,LinkListLb,LinkList&Lc)作用:把有序表La和Lb合并得到一个新的有序表La:a1≤a2≤a3……≤amLb:b1≤b2≤b3……≤bnLc:c1≤c2≤c3……≤cm+nci=ajorci=bkListMerge136La1028Lb9Lc12368910ListMerge1、首先建立空表LcLcpcnode=(LNode*)malloc(sizeof(LNode))

14、;if(!node)return(OVERFLOW);Lc=pc=node;node->next=NULL;ListMer

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

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

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