1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表
来源:互联网 发布:淘宝怎么营销 编辑:程序博客网 时间:2024/05/29 12:22
从尾到头打印单链表
1.将所有节点压如栈中,利用栈的先进后出原则来实现
2.也可以用递归来实现
struct ListNode{ int _value; ListNode* _pNext;};void ReversePrintfList(ListNode* pHead){ std::stack<ListNode*> sNode; ListNode* pNode = pHead; while(pNode) { sNode.push(pNode); pNode=pNode->_pNext; } while(!sNode.empty()) { pNode = sNode.top(); printf("%d ",pNode->_value); sNode.pop(); } printf("\n");};//递归实现void ReversePrintfList(ListNode * pHead){ if(NULL != pHead) { if(NULL != pHead->_pNext) ReversePrintfList(pHead->_pNext); printf("%d ", pHead->_value); }}
删除一个无头单链表的非尾节点
因为是单链表无法知道删除节点的前一节点是什么,当然可以遍历一次,用指针堆前一节点标记,但是这个时间复杂度就高了,我们可以利用下图的方法来实现
这样就实现了无头单链表的非尾节点的删除
void DeleteNoHeadListNode(ListNode* pNode){ assert(pNode); if(NULL == pNode->_pNext) { delete pNode; pNode = NULL; } else { ListNode* pNodeNext = pNode->_pNext; pNode->_value = pNodeNext->_value; pNode->_pNext = pNodeNext->_pNext; delete pNodeNext; pNodeNext = NULL; }}
阅读全文
0 0
- 1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表
- 1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表
- 【链表】删除一个无头单链表的非尾节点 以及从尾到头打印单链表
- 删除一个无头单链表的非尾节点+从尾到头打印单链表
- 17_7_17:删除一个无头单链表的非尾节点。从尾到头打印单链表
- 笔试/面试:删除一个无头单链表的非尾节点 ,从尾到头打印单链表
- day05删除一个无头单链表的非尾节点 +从尾到头打印单链表+复杂链表的复制
- <笔试><面试>单链表相关(1)从尾到头打印链表、删除一个无头链表的非尾结点
- 剑指offer--1.删除链表中某个节点 2.从尾到头打印链表
- 给定一个节点为头节点,从尾到头反过来打印出每个节点的值
- 2.输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表的头结点,从尾到头反过来打印每个节点的值。
- 输入一个链表的头结点,从尾到头反过来打印每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值。
- C#判断字符串为空的最好的方法
- 最大网络流问题
- js获取父窗口的变量和函数方法
- 不能将值 NULL 插入列 'Id'错误解决
- HDU6033---Add More Zero(2017多校联赛A题)
- 1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表
- placeholder属性使用
- 【Redis深入】Jedis的使用
- 富文本编辑器Quill的简单React封装
- android数据库操作(ContentProvider)
- 高斯滤波器原理及其实现
- 游戏中的实时水体模拟技术分享:波形叠加法与波动方程
- 手机号码判断
- ZOJ 3638 (集合组合、容斥定理)