在C ++中以反向方式打印不可变链接列表
假设我们有一个不可变的链表,我们必须借助以下接口反向打印每个节点的所有值:
ImmutableListNode-这是一个不可变链表的接口,我们被赋予列表的头部。
我们必须使用以下功能来访问链表-
ImmutableListNode.printValue()-这将打印当前节点的值。
ImmutableListNode.getNext()-这将返回下一个节点。
因此,如果列表类似于:[0,-4,-1,3,-5],则输出将为[-5,3,-1,-4,0]
为了解决这个问题,我们将遵循以下步骤-
为ImmutableListNode类型的节点定义一个堆栈st
当head不为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]