题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值
方案一:通常遍历链表是从头开始一个一个的遍历,所以如果要反过来打印链表,可以借助栈来实现
方案二:栈实现的方法就是递归,所以也可以用来递归来实现
//链表的结点
struct ListNode{
int value;
ListNode *nextNode;
};
//栈实现从尾到头输出
void PrintListReverse(ListNode *headNode){
if(headNode == NULL){
return;
}
//栈
stack<ListNode*> stk;
ListNode *tmpNode = headNode;
while(tmpNode != NULL){
stk.push(tmpNode);
tmpNode = tmpNode->nextNode;
}
//输出
while(!stk.empty()){
ListNode *topNode = stk.top();
cout<<topNode->value<<endl;
stk.pop();
}
}
//用递归来实现从尾到头输出
void PrintListReverse(ListNode *headNode){
if(headNode == NULL){
return;
}
PrintListReverse(headNode->nextNode);
cout<<headNode->value<<endl;
}