题目描述
输入一个链表的头节点,从尾到头打印出链表的每个节点的val。
解题思路
我们知道单链表只能从前往后遍历,那从最后一个元素开始打印节点的val值必须要先遍历之前的每个节点,也就是先遍历的后输出。想到这里不难想到我们要用到的结构是栈了吧,由于栈的特性就是先进后出。把之前遍历过的每个节点的值都保存在栈里,遍历完之后栈顶元素就是单链表的最后一个元素,然后我们依次输出栈中元素即可。
代码实现
/*
typedef struct Node
{
int val;
Node* next;
}Node;
*/
void print(Node* head)
{
if (head == NULL)return;
if (head->next == NULL)
{
cout << head->val << endl;
return;
}
stack<int> myStack;
while (head != NULL)
{
myStack.push(head->val);
head = head->next;
}
while (!myStack.empty())
{
cout << myStack.top() << " ";
myStack.pop();
}
}