链表问题
2013-04-29 23:04
134 查看
1.有单向链表,其中节点结构为Node{int value;Node *pNext};只知道指向某个节点的指针pCurrent;并且知道该节点不是尾节点,有什么办法把他删除吗?要求不断链.
思路:将
pCurrent->next结点内容拷贝并覆盖掉pCurrent,删除pCurrent->next结点
void DeleteNode(node *pCurr) { Assert(pCurr != NULL); node * pNext = pCurr->next; if(pNext != NULL) { pCurr->next = pNext->next; pCurr->data = pNex->data; delete pNext; } }
2.有两个单向链表,表头pHeader1,pHeader2,请写一个函数判断这两个链表是否有交叉.如果有交叉,给出交叉点.程序不能改变链表的内容,可以使用额外的空间,时间复杂度尽量小,最好给出两种解.(双重循环的解由于时间复杂度高,不算正解).
思路:(1)判断是否有交叉:分别遍历两个链表得到表尾p1、p2,如果p1==p2则两个链表有交叉点,否则没有;
(2)求交叉点(如果交叉):分别遍历链表计算两链表长度n1、n2,不妨设n1>=n2,先把pHeader1移动(n1-n2)位,再同步遍历数组,每移一位判断是否同一结点可得出结果。
时间复杂度O(n1+n2)
[title2]
[/title2]
相关文章推荐
- 环形链表实现约瑟夫问题 java语言
- 练手小程序2.链表翻转问题
- 一个链表在使用时出现内存错误的问题
- 判断链表中是否有环 ----- 有关单链表中环的问题
- 链表分割问题
- 链表问题,逆序打印链表,改变链表指向方向
- 数据结构——8 单链表约瑟夫问题
- 判断单链表是否存在环,判断两个链表是否相交问题详解(转载)
- 单链表和顺序表的逆置问题
- Leetcode -- 86. Partition List (以及关于没有头结点链表遍历修改的问题)
- 约瑟夫环问题--循环链表
- 关于链表的一些问题
- 链表问题(2)-- 删除聊表的中间节点和a/b处的节点
- 算法学习(六)链表问题总结,相交,成环
- 小算法系列-判断单链表是否存在环,判断两个链表是否相交问题详解(转)
- 判断单链表是否存在环,判断两个链表是否相交问题详解(转载)
- 【转载】判断链表中是否有环 ----- 有关单链表中环的问题
- 猫吃老鼠问题的链表实现
- 关于链表操作一些有趣的问题!
- 不敢死队问题 分类: 链表 2015-06-08 08:17 13人阅读 评论(0) 收藏