博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【面试题5】从尾到头打印链表
阅读量:5332 次
发布时间:2019-06-14

本文共 1954 字,大约阅读时间需要 6 分钟。

【题目描述】

输入一个链表的头结点,从尾到头反过来打印出每个结点的值。

【解决方案】

1. 最普通的方法,先反转链表,再输出。但是,由于反转会改变链表结构,不推荐;

2. 典型的“后进先出”,联想到栈,可以输出到栈中,再以此读取;

3. 栈可以用递归实现,故可以用递归实现。如果数据量大,可能导致方法调用栈溢出,所以,最好还是显示地用递归实现。

我的代码实现1,仅供参考:

1         ///  2         /// 反转链表后输出 3         ///  4         public static void PrintLinkedListValueReverse(ListNode head) 5         { 6             if (head == null) 7                 return; 8  9             ListNode headReverse = new ListNode(head.Value);10             ListNode temp = null;11 12             //反转链表13             while (head.Next != null)14             {15                 head = head.Next;16                 temp = new ListNode(head.Value);17                 temp.Next = headReverse;18                 headReverse = temp;19             }20 21             //输出反序链表22             while (headReverse != null)23             {24                 Console.WriteLine(headReverse.Value);25                 headReverse = headReverse.Next;26             }27         }

我的代码实现2,仅供参考:

1         ///  2         /// 利用栈输出 3         ///  4         public static void PrintLinkedListValueReverse(ListNode head) 5         { 6             if (head == null) 7                 return; 8  9             Stack
stack = new Stack
();10 11 //入栈12 while (head != null)13 {14 stack.Push(head.Value);15 head = head.Next;16 }17 18 //出栈19 while (stack.Count != 0)20 {21 Console.WriteLine(stack.Pop());22 }23 }

我的代码实现3,仅供参考:

1         ///  2         /// 利用递归输出 3         ///  4         public static void PrintLinkedListValueReverse(ListNode head) 5         { 6             if (head != null) 7             { 8                 PrintLinkedListValueReverse(head.Next); 9                 Console.WriteLine(head.Value);10             }11         }

 

转载于:https://www.cnblogs.com/HuoAA/p/4797650.html

你可能感兴趣的文章
第三周vim入门学习1
查看>>
Linux内核分析(第九周)
查看>>
Serlvet学习笔记之一 ——实现servlet的3种方法
查看>>
批处理
查看>>
使用pycharm编写自动化脚本
查看>>
browser-sync启动命令
查看>>
HttpWebRequest请求返回非200的时候 HttpWebResponse怎么接受返回错误提示
查看>>
VBScript 内置函数
查看>>
java打jar包的几种方式详解
查看>>
关于sublime3中package controle不出来的问题
查看>>
[转]Linux动态库(.so)搜索路径
查看>>
c/c++中typedef详解
查看>>
[译]Javascript数列filter方法
查看>>
使用极酷阳光播放器做流媒体播放并不暴露视频地址
查看>>
XamarinAndroid组件教程设置动画的时长参数
查看>>
Visual Studio 2019更新到16.1.4
查看>>
μC/OS-II 信号量集
查看>>
Xamarin提示安装包错误解决办法
查看>>
AutoCompleteTextView的用法
查看>>
keepalive专题
查看>>