步步写算法(之循环单向链表)
3页1、 软件英才网 软件行业驰名招聘网站有需要请联系我们一步一步写算法(之循环单向链表)一步一步写算法(之循环单向链表) 前面的博客中,我们曾经有一篇专门讲到单向链表的内容。那么今天讨论的链表和上次讨论的链表有什么不同呢?重点就在这个“循环“上面。有了循环,意味着我们可以从任何一个链表节点开始工作,可以把 root 定在任何链表节点上面,可以从任意一个链表节点访问数据,这就是循环的优势。那么在实现过程中,循环单向链表有什么不同?1)打印链表数据)打印链表数据cpp view plaincopyvoid print_data(const LINK_NODE* pLinkNode) LINK_NODE* pIndex = NULL; if(NULL = pLinkNode) return; printf(“%dn“, pLinkNode-data); pIndex = pLinkNode-next; while(pLinkNode != pIndex) printf(“%dn“, pIndex-data); pIndex = pIndex -next; 以往,我们发现打印数据的结束都是判断指针是
2、否为 NULL,这里因为是循环链表所以发生了变化。原来的条件(NULL != pLinkNode)也修改成了这里的(pLinkNode != pIndex) 。同样需要修改的函数还有 find 函数、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 TRUE; if(NULL != find_data(*ppLinkNode, data) return FALSE; pNode = create_link_node(data); assert(NULL
3、 != pNode); pNode-next = (*ppLinkNode)-next; (*ppLinkNode)-next = pNode; return TRUE; 这里的 insert 函数在两个地方发生了变化: a)如果原来链表中没有节点,那么链表节点需要自己指向自己b)如果链表节点原来存在,那么只需要在当前的链表节点后面添加一个数据,同时修改两个方向的指针即可3) 删除数据删除数据cpp 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) *ppLinkNode = 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) 删除的时候需要重点判断删除的数据是不是链表的头结点数据
《步步写算法(之循环单向链表)》由会员206****923分享,可在线阅读,更多相关《步步写算法(之循环单向链表)》请在金锄头文库上搜索。
人教版小学英语单词分类记忆汇总表excel版
人教版九年级全一册英语词汇
2019年开展垃圾分类的工作总结报告【五篇】
六年级英语绘本教案
外研版小学英语单词表全带音标(一年级起点1-12册)
最新国家开放大学电大投资学网络核心课形考网考作业及答案
初中人教版七年级下册生物复习提纲
高中英语语法大全高中英语语法系统全解word版
☆初中英语语法专项练习习题以及答案
初中英语常考近义词同义词辨析
高中物理选修3-5全套教案(人教版) (1)
英语绘本《WeatherReport》教学设计
防护功能平战转换设计专篇各专业
初中人教版七年级上册下册全册生物复习提纲21页 (1)
商务星球版七年级上册地理知识点归纳总结
初中人教版七年级上册下册全册生物复习提纲21页 (2)
高中高考语文作文词汇句型优美句子万能语句大全
中考地理选择题专项复习550题含答案
北师大版七年级数学上册第四章基本平面图形单元测试题含解析
人教版七年级数学上册第一章有理数单元检测题解析版
2024-03-21 1页
2024-03-21 1页
2024-03-15 2页
2024-03-01 2页
2024-03-01 2页
2024-02-28 118页
2024-02-28 152页
2024-02-28 87页
2024-02-28 92页
2024-02-28 96页