步步写算法(之循环单向链表)

上传人:206****923 文档编号:37681595 上传时间:2018-04-20 格式:DOC 页数:3 大小:50KB
返回 下载 相关 举报
步步写算法(之循环单向链表)_第1页
第1页 / 共3页
步步写算法(之循环单向链表)_第2页
第2页 / 共3页
步步写算法(之循环单向链表)_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《步步写算法(之循环单向链表)》由会员分享,可在线阅读,更多相关《步步写算法(之循环单向链表)(3页珍藏版)》请在金锄头文库上搜索。

1、 软件英才网 软件行业驰名招聘网站有需要请联系我们一步一步写算法(之循环单向链表)一步一步写算法(之循环单向链表) 前面的博客中,我们曾经有一篇专门讲到单向链表的内容。那么今天讨论的链表和上次讨论的链表有什么不同呢?重点就在这个“循环“上面。有了循环,意味着我们可以从任何一个链表节点开始工作,可以把 root 定在任何链表节点上面,可以从任意一个链表节点访问数据,这就是循环的优势。那么在实现过程中,循环单向链表有什么不同?1)打印链表数据)打印链表数据cpp view plaincopyvoid print_data(const LINK_NODE* pLinkNode) LINK_NODE*

2、 pIndex = NULL; if(NULL = pLinkNode) return; printf(“%dn“, pLinkNode-data); pIndex = pLinkNode-next; while(pLinkNode != pIndex) printf(“%dn“, pIndex-data); pIndex = pIndex -next; 以往,我们发现打印数据的结束都是判断指针是否为 NULL,这里因为是循环链表所以发生了变化。原来的条件(NULL != pLinkNode)也修改成了这里的(pLinkNode != pIndex) 。同样需要修改的函数还有 find 函数、

3、count 统计函数。2)插入数据)插入数据cpp view plaincopySTATUS insert_data(LINK_NODE* ppLinkNode, int data) LINK_NODE* pNode; if(NULL = ppLinkNode) return FALSE; if(NULL = *ppLinkNode) pNode = create_link_node(data); assert(NULL != pNode); 软件英才网 软件行业驰名招聘网站有需要请联系我们 pNode-next = pNode; *ppLinkNode = pNode; return TRU

4、E; if(NULL != find_data(*ppLinkNode, data) return FALSE; pNode = create_link_node(data); assert(NULL != pNode); pNode-next = (*ppLinkNode)-next; (*ppLinkNode)-next = pNode; return TRUE; 这里的 insert 函数在两个地方发生了变化: a)如果原来链表中没有节点,那么链表节点需要自己指向自己b)如果链表节点原来存在,那么只需要在当前的链表节点后面添加一个数据,同时修改两个方向的指针即可3) 删除数据删除数据cp

5、p view plaincopySTATUS delete_data(LINK_NODE* ppLinkNode, int data) LINK_NODE* pIndex = NULL; LINK_NODE* prev = NULL; if(NULL = ppLinkNode | NULL = *ppLinkNode) return FALSE; pIndex = find_data(*ppLinkNode, data); if(NULL = pIndex) return FALSE; if(pIndex = *ppLinkNode) if(pIndex = pIndex-next) *ppL

6、inkNode = NULL; else prev = pIndex-next; while(pIndex != prev-next) 软件英才网 软件行业驰名招聘网站有需要请联系我们 prev = prev-next; prev-next = pIndex-next; *ppLinkNode = pIndex-next; else prev = pIndex-next; while(pIndex != prev-next) prev = prev-next; prev-next = pIndex-next; free(pIndex); return TRUE; 和添加数据一样,删除数据也要在两个方面做出改变: a)如果当前链表节点中只剩下一个数据的时候,删除后需要设置为 NULLb)删除数据的时候首先需要当前数据的前一个数据,这个时候就可以从当前删除的数据开始进行遍历c) 删除的时候需要重点判断删除的数据是不是链表的头结点数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号