题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值
方案一:通常遍历链表是从头开始一个一个的遍历,所以如果要反过来打印链表,可以借助栈来实现
方案二:栈实现的方法就是递归,所以也可以用来递归来实现
//链表的结点 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; }
时间: 2024-10-28 12:59:22