多语言展示
当前在线:1470今日阅读:26今日分享:39

Java如何获取链表中每个节点下一个更大的节点值

题目:给定一条链表,获取链表中每个节点后面第一个大于该节点值的节点的值,如果某个节点后面所有节点的值都不大于该节点的值,即没有符合上述条件的节点的值,则用 0 填充。图示给出一个链表进行示例。
工具/原料
1

Eclipse

2

JDK1.8

方法/步骤
1

编写一个代表链表节点的静态内部类,通过该类对象可以构建一条单向链表结构,图示代码。

2

实现算法,获取所有节点后第一个大于该节点值的节点的值,算法思想为:1. 获取链表长度,即最终返回的数组长度。2. 声明一个栈,用于存储链表节点的索引,对于某个链表节点 n,处理栈顶所有值小于该节点的值的节点,节点n的值就是栈顶这些节点需要获取的值,处理完毕后,将节点n的索引入栈。图示获取链表长度的函数。

3

实现算法,通过栈这种数据结构,通过遍历一遍链表,获取所有节点后面第一个大于该节点值的节点的值。

4

编写一个函数,可以将一条单向无环链表转换为一个字符串,便于在控制台打印该链表,辅助本地测试。

5

编写并运行测试方法,观察控制台输出,符合预期,本地测试通过。

6

平台提交算法,测试通过。

注意事项
1

Java 类库提供 Stack 这种栈数据结构,其 peak 方法返回但不删除栈顶元素

2

Stack 的 pop 方法会返回并在栈中删除栈顶元素

推荐信息