在 C++ 中以相反顺序打印不可变链表
假设我们有一个不可变的链表,我们必须借助以下界面以相反的顺序打印出每个节点的所有值 −
ImmutableListNode − 这是不可变链表的界面,可以为我们提供列表的头。
我们必须使用以下函数来访问链接列表 −
ImmutableListNode.printValue() − 这将打印当前节点的值。
ImmutableListNode.getNext() − 这将返回下一个节点。
因此,如果列表类似于:[0, -4, -1, 3, -5],则输出将为 [-5, 3, -1, -4, 0]
要解决此问题,我们将遵循以下步骤 −
为 ImmutableListNode 类型节点定义一个栈 st
在头不为 null 的同时
将头插入 st
头 := 头的下一个
在 st 不为空的同时
打印堆栈顶节点的值
从堆栈中删除节点
示例(C++)
让我们查看以下实现,以获得更好的理解 −
class Solution { public: void printLinkedListInReverse(ImmutableListNode* head) { stack <ImmutableListNode*> st; while(head){ st.push(head); head = head->getNext(); } while(!st.empty()){ st.top()->printValue(); st.pop(); } } };
输入
[0,-4,-1,3,-5]
输出
[-5,3,-1,-4,0]
广告