剑指Offer_6_从尾到头打印链表
题目描述
typedef struct ListNode
{
int m_nKey ;
ListNode * m_pNext ;
}ListNode;
分析:
可能有人的第一反应是将链表中的节点指针翻转过来。但是改变原有的链表结构可能在某些情况下不被允许。
打印是一个只读操作,首先遍历一遍链表,但要做到逆序打印,可以用栈将节点里面的值存起来。然后将栈push至空。
链表逆序打印代码 :
void PrintListNode(ListNode *pHead){
stack<int> sk ;
while(pHead !=NULL){
sk.push(pHead->m_nKey);
pHead = pHead->m_pNext ;
}
// 打印
while(!sk.empty()){
cout << sk.top()<<endl ;
sk.pop();
}
}
完整代码 :
此处链表 listNode 为举例 实例化 为了 0->1->2->3->4->5->6->7->8->9->10->null ;
#include<iostream>
#include<malloc.h>
#include<stack> using namespace std ; #define N 10 typedef struct ListNode
{
int m_nKey ;
ListNode * m_pNext ;
}ListNode; void PrintListNode(ListNode *pHead){
stack<int> sk ;
while(pHead !=NULL){
sk.push(pHead->m_nKey);
pHead = pHead->m_pNext ;
}
// 打印
while(!sk.empty()){
cout << sk.top()<<endl ;
sk.pop();
}
}
int main(){
ListNode *pHead = (ListNode*)malloc(sizeof(ListNode*)) ;
ListNode *listNode = (ListNode*)malloc(sizeof(ListNode*)) ;
listNode->m_nKey = ;
pHead = listNode ;
for(int i=;i<N;i++){
ListNode *pNew = (ListNode*)malloc(sizeof(ListNode*)) ;
pNew->m_nKey = i+ ;
listNode->m_pNext = pNew ;
listNode = listNode->m_pNext ;
}
listNode->m_pNext = NULL ;
PrintListNode(pHead);
return ;
}
打印结果:
Process returned (0x0) execution time : 0.189 s
Press any key to continue.
此题除了使用栈,还可以使用递归。
代码差别只在PrintListNode函数。
#include<iostream>
#include<malloc.h>
#include<stack> using namespace std ; #define N 10 typedef struct ListNode
{
int m_nKey ;
ListNode * m_pNext ;
}ListNode; void PrintListNode(ListNode *pHead){
if(pHead->m_pNext!=NULL){
PrintListNode(pHead->m_pNext);
}
cout << pHead->m_nKey << endl;
}
int main(){
ListNode *pHead = (ListNode*)malloc(sizeof(ListNode*)) ;
ListNode *listNode = (ListNode*)malloc(sizeof(ListNode*)) ;
listNode->m_nKey = ;
pHead = listNode ;
for(int i=;i<N;i++){
ListNode *pNew = (ListNode*)malloc(sizeof(ListNode*)) ;
pNew->m_nKey = i+ ;
listNode->m_pNext = pNew ;
listNode = listNode->m_pNext ;
}
listNode->m_pNext = NULL ;
PrintListNode(pHead);
return ;
}
剑指Offer_6_从尾到头打印链表的更多相关文章
- 剑指Offer 从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值. 输入描述: 输入为链表的表头 输出描述: 输出为需要打印的“新链表”的表头 思路: 用容器vector,递归到最后一个元素,push_back到 ...
- 剑指offer——从尾到头打印链表节点的值
输入一个链表,从尾到头打印链表每个节点的值. 输入描述:输入为链表的表头 输出描述:输出为需要打印的“新链表”的表头 一.问题分析 初拿到这个题目时,这应该是考察单向链表这一数据结构.单向链表的遍历总 ...
- 剑指Offer——从尾到头打印链表
题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 分析: 方法1:利用栈的性质,先从头到尾遍历链表每个节点的值存入栈中,最后一个一个出栈顺序便是从尾到头的. 方法2:直接从头到尾遍历链表存储节 ...
- 剑指offer —— 从尾到头打印链表
1.问题:输入一个链表,从尾到头打印链表每个节点的值. /** * public class ListNode { * int val; * ListNode next = null; * * Lis ...
- 剑指Offer-3.从尾到头打印链表(C++/Java)
题目: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 分析: 很简单的一道题,其实也就是从尾到头打印链表,题目要求返回ArrayList,其实也就是一个数组. 可以将链表中的元素全部 ...
- 剑指offer--18.从尾到头打印链表
递归,逐个加到后面 ------------------------------------------------------------------------------ 时间限制:1秒 空间限 ...
- 用js刷剑指offer(从尾到头打印链表)
题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 牛客网链接 js代码 /*function ListNode(x){ this.val = x; this.next = nu ...
- 4、剑指offer——从尾到头打印链表java实现
**题目描述** **输入一个链表,按链表从尾到头的顺序返回一个ArrayList.** 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 思路: 1.如果链 ...
- [剑指Offer]6-从尾到头打印链表
典型的后进先出,可以借助栈,也可以使用递归. 考虑到若链表过长递归可能造成函数调用栈溢出,所以使用栈更好. 注意stack无遍历操作,全部用push(),pop(),top()完成. 以下创建列表胡乱 ...
随机推荐
- Python 字典和json的本质区别(个人理解)
个人理解:字典和json显示的时候差不多,但是数据类型不同(如下图): 字典的类型是字典dict json的类型是字符串str 接口测试是传参数payload时有时候是传的字符串,应该将payload ...
- ace_tree总结。各类问题解决办法汇集
首先讲一下怎么使用,然后讲一下出现的问题的解决办法 1.引用js和css文件 ace-extra.min.js.ace.min.css.fuelux.tree.min.js.ace-elements. ...
- php 例子 如何转换ISO8601为 utc时间
//firstpowertime "2017-01-02T13:22:22" 获取时间$firstpowertime=$list[$i]['firstpowertime'];//判 ...
- 多少牛逼的程序员毁在low逼的英文发音上(JAVA)
最最常用的关键词及音标 数据类型:boolean.byte.short.int.long.double.char.float.double. 包引入和包声明:import.package. 用于类和接 ...
- NFS服务
第1章 NFS介绍 1.1 NFS的概念 NFS是Network File System的缩写,即网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录.NFS客户 ...
- org.springframework.web.filter.DelegatingFilterProxy的作用
一.类结构 DelegatingFilterProxy类继承GenericFilterBean,间接实现了Filter,故而该类属于一个过滤器.那么就会有实现Filter中init.doFilter. ...
- Spring 4 MVC example with Maven
In this tutorial, we show you a Spring 4 MVC example, using Maven build tool. Technologies used : Sp ...
- MySQL子查询优化实例
优化:子查询改写成关联查询 线上遇到问题,查询较慢,如为对应SQL的查询执行计划: localhost.\G . row *************************** id: select_ ...
- ThreeJS的特效合成器和后期处理通道
最近要写个 web 交互式发光可交互的框架.没查到啥好资料,自己一个人摸索了很久,有些失望,可是毕竟是探索过的东西,所以做个记录,怀念我过去好多天掉的青丝(捂脸).我在前面那篇博客里面已经介绍了如何让 ...
- 初窥 MongoDB
最近在研究Nodejs 自然就接触到了MongoDB 这玩意儿有意思 与关系型数据库相比少了很多条条框框 让我情不自禁的想要了解它的所有 MongoDB与Redis同类 属于NoSql的一种,特点 ...