剑指offer之反向打印链表值

1 问题

反向打印链表值

 

 

 

 

2 思考

1) 我们利用栈的思想,新进后出,把链表的每个元素分别入栈之后再打印栈

2)既然上面用到了栈,我们应该就会想到用到递归来实现

 

 

 

 

3 代码实现

#include <iostream>
#include <stack>
#include <stdlib.h>using namespace std;typedef struct node
{int value;struct node *next;
} Node;/***把链表的每一个元素遍历出来放进栈,然后利用*栈把先进后出的特点,然后打印栈*/
void reverse_printf(Node *head)
{if (head == NULL){std::cout << "head is NULL" << std::endl;return;	}Node *p = head;stack<Node *> stk;	while (p != NULL){stk.push(p);p = p->next;}while(!stk.empty()){Node *node = stk.top();std::cout << node->value << std::endl;stk.pop();}
}/***既然上面用到了栈,那么我们自然而然就会想到*用递归的思想,我们就自己调用自己直到遍历到最后*很明显我们递归的条件是最后一个原始的next不能为空*/
void reverse_printf1(Node *head)
{/**这样也行if (head == NULL){return;	}reverse_printf1(head->next);std::cout << head->value << std::endl;**/if (head != NULL){reverse_printf1(head->next);std::cout << head->value << std::endl;}
}void printf(Node *head)
{if (head == NULL){std::cout << "head is NULL" << std::endl;return;	}Node *p = head;while (p != NULL){std::cout << p->value << std::endl;p = p->next;}
}int main()
{Node *head = NULL;Node *node1 = NULL;Node *node2 = NULL;Node *node3 = NULL;head = (struct node*)malloc(sizeof(Node));node1 = (struct node*)malloc(sizeof(Node));node2 = (struct node*)malloc(sizeof(Node));node3 = (struct node*)malloc(sizeof(Node));	if (head == NULL || node1 == NULL || node2 == NULL || node3 == NULL){std::cout << "malloc fail" << std::endl;return -1;}head->value = 0;head->next = node1;node1->value = 1;node1->next = node2;node2->value = 2;node2->next = node3;node3->value = 3;node3->next = NULL;printf(head);std::cout << "***************" << std::endl;reverse_printf(head);std::cout << "***************" << std::endl;reverse_printf1(head);free(head);free(node1);free(node2);free(node3);return 0;}

 

 

 

 

4 运行结果

0
1
2
3
***************
3
2
1
0
***************
3
2
1
0

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php调用数据库中的图片地址显示不出来,图片显示不出来,但是数据库里有显示...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼index.phpinclude con.php;?>#container{width: 17%;margin: auto auto;}.news_list {list-style: none;}.loadmore {color: #ffffff;border-radius: 5px;width: 60%;height: 50px;font-size: 15px;background: rgba(148, 175,…

互联网打响云上争夺战:从计算到生态

阿里云&#xff1a;用人工智能治理城市 国内互联网企业的战场今年已从“地面”上升到“云端”&#xff0c;BAT先后对各自的云计算进行了品牌升级&#xff0c;网易等企业也开始积极参战&#xff0c;利用在技术积累及原有领域等方面的优势&#xff0c;通过与相关方合作&#xff0…

gtk+学习笔记(五)

今天继续做的是昨天那个界面对的优化&#xff0c;直接贴下代码&#xff0c; 1 void click_radio(GtkWidget *widget,gpointer *data)2 {3  GtkWidget *dialog;4  GtkWidget *box; 5  GtkWidget *pbox;6  GtkWidget *bbox; 7  GtkWidget *password_label,*passw…

python如何开启多线程_Python如何创建多线程

Python提供了_thread和threading两个模块来支持多线程&#xff0c;但_thread提供低级别的、原始的县城支持&#xff0c;以及一个简单的锁&#xff0c;通常情况下我们使用后者&#xff0c;来进行多线程编程创建多线程使用threading模块创建线程有两种方式&#xff0c;一种是调用…

C#委托、事件学习之(二)——简单按钮委托事件

一、打开Form.cs文件,写入3个一般形式的EventArgs事件show1(),show2(),show3()。 using System; using System.Windows.Forms;namespace WindowsFormsApplication2 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void show1(object se…

php中的匿名函数简单使用

直接上代码了&#xff1a; <?php $test1 function($value) {echo $value; };$test1(HelloWorld); ?> 不懂你们有没有一种感觉&#xff0c;看见了js&#xff1f;近视的我&#xff0c;看到了function 就以为js… 好了&#xff0c;你看看最开始&#xff0c;是不是一个…

css3 设置背景图片大小(缩略图形式缩小)

废话当然不说了。直接上代码 <style>#mycon{background:url(Tpl/1.jpg);background-size:400px 400px;background-repeat:no-repeat;border-radius: 4px;border: 1px solid #ccc;width: 400px;height: 400px;}</style> <div id"mycon">原来背景图大…

C# WPF UI框架MahApps切换主题

概述本指南将向您介绍MahApps.Metro如何切换主题&#xff0c;所有的MahApps.Metro的主题都包含在单独的资源字典中。如何使用主题您可以在以下可用配色方案中进行选择&#xff1a;"Red", "Green", "Blue", "Purple", "Orange&quo…

剑指offer之打印链表的倒数第N个节点的值

1 问题 打印链表的倒数第N个节点的值&#xff0c;&#xff08;要求能只能便利链表一次&#xff09; 比如链表如下&#xff0c;打印倒数第三个值就是4 1-> 2-> 3-> 4-> 5-> 6 2 思路 既然只要只能遍历一次&#xff0c;我们可以这样思考&#xff0c;比如我们要…

网盘搜索插件php源码,百度云网盘搜索引擎 PHP版 v1.0

百度云网盘搜索引擎是一个以PHPMySQL进行开发的网盘搜索引擎源码。百度云网盘搜索引擎运行运行环境 开始之前你需要安装* PHP 5.3.7 * MySQL* Python 2.7 ~* [xunsearch](//xunsearch.com/) 搜索引擎项目的目录结构___大致是这样的--- indexer/ #索引--- spider/ #爬虫--- sql/…

C#委托、事件学习之(三)——热水器烧水案例

using System;namespace DelegateExample {public class Heater{private int temperature;public string type = "RealFire 001"; // 添加型号作为演示public string area = "China Xian"; // 添加产地作为演示//声明委托public delegate void BoiledEvent…

【hive】——metastore的三种模式

Hive中metastore&#xff08;元数据存储&#xff09;的三种方式&#xff1a; 内嵌Derby方式Local方式Remote方式[一]、内嵌Derby方式 这个是Hive默认的启动模式&#xff0c;一般用于单元测试&#xff0c;这种存储方式有一个缺点&#xff1a;在同一时间只能有一个进程连接使用数…

IDC:第一季度全球服务器市场收入下滑4.6% 市场为重大升级做准备

根据IDC全球服务器市场季度追踪报告&#xff0c;2017年第一季度全球服务器市场的厂商收入同比下滑4.6%。整个服务器市场的增长继续放缓&#xff0c;大多数超大规模服务提供商都在等待今年第二季度部署英特尔新的Skylake处理器。高端服务器销售继续拖累整体市场表现&#xff0c;…

DataGridView很详细的用法

DataGridiew用法总结一、DataGridView 取得或者修改当前单元格的内容&#xff1a; 当前单元格指的是 DataGridView 焦点所在的单元格&#xff0c;它可以通过 DataGridView 对象的 CurrentCell 属性取得。如果当前单元格不存在的时候&#xff0c;返回Nothing(C#是null) // 取得当…

python如何创建excel文件_Python xlrd/xlwt 创建excel文件及常用操作

一、创建excel代码备注&#xff1a;封装好了(可直接调用)"""-*- coding:utf-8 -*-Time :2020/8/20 21:02Author :JarvisFile :jar_excel_util.pyVersion&#xff1a;1.0"""from typing import Listimport xlwtclass JarExcelUtil:def __init__(s…

最通俗易懂的依赖注入之服务注册与注入

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事这篇文章是 ASP.NET 6 依赖注入系列文章的第 4 篇&#xff0c;点击上方蓝字可以阅读整个系列。在上一篇文章中&#xff0c;我们讨论了依赖注入的服务容器与服务作用域。接下来&#xff0c;在这篇文章中&#xff0c;我们继…

linux之可视化查看磁盘大小并且删除大文件

1 问题 可视化查看磁盘大小并且删除大文件&#xff0c;之前我一直没有找到好的办法&#xff0c;原谅我的无知。 2 操作 我们直接搜索Disk Usage Analyzer 然后一个一个目的的点击查看&#xff0c;如下图 我们就可以清晰的看到文件占用大小&#xff0c;我们就可以很好的删除了…

php Heredoc应用说明

Heredoc部分实现界面与代码的准分离 我们如下的例子可以了解 Heredoc&#xff1a; <?php $name http://blog.csdn.net/a757291228; echo <<<HRERDOC <html> <head> <title>http://blog.csdn.net/a757291228</title> </head>…

C#委托、事件学习之(一)——委托事件描述

1、委托是一个类,定义了方法的类型,使得该方法可以作为其他方法的参数。避免了if...else的大量使用。 using System;namespace ConsoleApplication1 {public class GreetPeople{public delegate void GreetEventHander(object sender, GreetEventArgs e);public event Greet…

个人空间风格模版php,ThinkPHP 模板布局

模块继承 {extend name"" /}{block name""}{/block}基础模板 base.html子模板 块区在子模板中&#xff0c;可以对基础模板中的区块进行重载定义&#xff0c;如果没有重新定义的话&#xff0c;则表示沿用基础模板中的区块定义&#xff0c; 如果定义了一个空…