删除一个无头单链表的非尾节点【每日一题】
来源:互联网 发布:淘宝能不能花钱解封 编辑:程序博客网 时间:2024/05/21 19:35
1、删除一个无头单链表的非尾节点:
分析:既然是一个无头链表,那么我们就不能通过直接访问这种形式进行删除。找不到上一个,那么就找下一个,让tmp保存node后节点的信息,然后让改动node的值,让node指向tmp的下一个,此时删除tmp,也顺利完成题目的要求。
void DelNoHeadNotTail(PNode* pHead , int pos){ if(NULL != pHead) { PNode* pPrev = pHead;//pPrev指向要删除结点的前一个结点 PNode* pCur = pPrev->_pNext ;//pCur指向要删除节点 while(pCur->_data != pos) { pCur = pCur->_pNext ; pPrev = pPrev->_pNext ; } pPrev->_pNext = pCur->_pNext ; free(pCur); pCur->_pNext = NULL; }}
2、从尾到头打印单链表
从头到尾比较简单,那么从尾到头即第一个遍历的节点最后一个输出,而最后一个遍历的节点第一个输出,即“先进后出”,可以使用栈来实现这个顺序。每经过一个节点把该节点放到一个栈中,当遍历完整个链表后再从栈顶开始 逐个输出节点的值,此时输出的节点顺序就反转过来了。当然这里我使用的C语言实现所以我们可以用递归来模拟整个过程。
void PrintFromTail2Head(PNode pHead){ if(pHead != NULL) { if(pHead->_pNext != NULL) PrintFromTail2Head(pHead->_pNext ); } printf("%d->",pHead->_data );}
注意:(逆置)反转链表和逆序打印链表是两个问题。
上面所述为逆序打印链表,接下来我们讨论反转链表这回事。
反转链表是将该节点原来指向下一个节点的指针指向该节点的前一个节点,最后得到的新链表的头节点指向原链表的最后一个节点。那么反转一个链表就只需要调整链表中指针的方向。
Node* ReverseList(PNode pHead){ PNode pReverseHead = NULL; PNode pNode = pHead; PNode pPrev = NULL; while(pNode != NULL) { PNode pNext = pNode->_pNext ; if(pNext == NULL) pReverseHead = pNode; pNode->_pNext = pPrev; pPrev = pNode; pNode = pNext; } return pReverseHead;}
阅读全文
0 0
- 删除一个无头单链表的非尾节点【每日一题】
- 每日一题——删除无头链表的非尾节点、逆向打印单链表
- 删除一个无头单链表的非尾节点
- 删除一个无头单链表的非尾节点
- 删除一个无头单链表的非尾节点
- 删除一个无头单链表的非尾节点
- 删除一个无头单链表的非尾节点(C语言)
- C语言:【单链表】删除一个无头单链表的非尾节点
- 链表--删除一个无头单链表的非尾节点
- 无头单链表的非尾节点删除
- 删除无头单链表的非尾节点
- 【链表】删除一个无头单链表的非尾节点 以及从尾到头打印单链表
- 删除一个无头单链表的非尾节点+从尾到头打印单链表
- 17_7_17:删除一个无头单链表的非尾节点。从尾到头打印单链表
- 笔试/面试:删除一个无头单链表的非尾节点 ,从尾到头打印单链表
- 1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表
- 1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表
- 【链表面试题】删除无头单链表的非尾节点,插入一个元素到无头链表指定位置
- 《HTML5开发手册》学习笔记(一)
- chap7内存分配
- Android APK反编译就这么简单 详解(附图)
- HDU2578 Dating with girls(1)(二分)
- RxJava2和Retrofit封装的RetrofitClient2终于来了!
- 删除一个无头单链表的非尾节点【每日一题】
- [BZOJ]4810 由乃的玉米田 莫队+bitset
- WWDC 2016 Session笔记
- 解决报错:;Syntax error on token(s), misplaced construct(s)
- 【JavaSE学习笔记】面向对象_接口、形式参数问题、内部类
- ARC 061E すぬけ君の地下鉄旅行 最短路(拆点)
- Hive几种数据导出方式
- 自己动手搭建React开发环境之一React和ReactDOM
- virtualbox windows 主机 安装ubuntu系统 共享文件夹 没有权限访问