【20】从尾到头打印链表
2014-06-03 19:37
169 查看
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值
方案一:通常遍历链表是从头开始一个一个的遍历,所以如果要反过来打印链表,可以借助栈来实现
方案二:栈实现的方法就是递归,所以也可以用来递归来实现
//链表的结点
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;
}
方案一:通常遍历链表是从头开始一个一个的遍历,所以如果要反过来打印链表,可以借助栈来实现
方案二:栈实现的方法就是递归,所以也可以用来递归来实现
//链表的结点
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;
}
相关文章推荐
- offer - 06 - 从尾到头打印链表
- 从尾到头打印链表
- 【剑指Offer】面试题5:从尾到头打印链表
- 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值
- [置顶] 剑指offer:第5题从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 剑指offer 5. 从尾到头打印链表
- 从尾到头打印链表
- 【面试题五】从尾到头打印链表
- 从尾到头打印链表
- 剑指offer--从尾到头打印链表
- 【剑指offer】-从尾到头打印链表
- 剑指offer:面试4从尾到头打印链表
- 剑指 03-—链表从尾到头打印
- 从尾到头打印链表
- 从尾到头打印链表
- 剑指Offer 链表相关问题--从尾到头打印链表、合并两个排序的链表
- 《剑指offer》牛客网java题解-从尾到头打印链表
- 从尾到头打印一个链表