从尾到头打印链表

原创 2018年04月16日 20:09:06

写在前面:

牛客网剑指offer的日记文。算法总结是参考牛客网评论后自己的理解与整理。萌新会尽量著明引用出处,侵权必删。

题目描述:

输入一个链表,从尾到头打印链表每个节点的值。

题目分析:

反转链表。

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> v;
        ListNode* p = head, *pre, *hail = NULL;
        while(p){
            pre = p;
            p = p->next;
            pre->next = hail;
            hail = pre;
        }
        p = hail;
        while(p){
            v.push_back(p->val);
            p = p->next;
        }
        return v;
    }
};

总结:反转链表:

非递归版:

ListNode* reverseList(ListNode *head){
    ListNode* p = head, *temp, *newHead = NULL;
    while(p){
    	temp = p;
    	p = p->next;
    	temp->next = newHead;
    	newHead = temp;
	}
	return newHead;
}

递归版:

ListNode* reverseList(ListNode * head){
	if(!head || !head->next) return head;
	ListNode* newHead = reverseList(head->next);
	head->next->next = head;
	head->next = NULL;
	return newHead;
}
转载:https://blog.csdn.net/fx677588/article/details/72357389

从尾到头打印链表(java)

题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。 通常打印是一个只读操作,我们不希望打印时修改内容。 接下来我们想到解决这个问题肯定要遍历链表。遍历的顺序是从头到尾的顺序,可输出的顺...
  • u013238950
  • u013238950
  • 2016-03-03 10:17:01
  • 2244

从尾到头打印链表(java)

1.问题描述 输入一个链表,从尾到头打印链表每个节点的值。 2.算法分析 方案一(非递归版):构造一个栈,将链表中所有元素存入栈中,然后使用该栈构造ArrayList 方案二(递归版):在顺序遍历链表...
  • tanjie_123
  • tanjie_123
  • 2016-10-31 16:05:22
  • 222

Python :从尾到头打印链表

牛客网上的剑指 offer的在线编程: 题目描述: 输入一个链表,从尾到头打印链表每个节点的值 # -*- coding:utf-8 -*- # class ListNode: # de...
  • Lynette_bb
  • Lynette_bb
  • 2017-06-18 11:44:20
  • 1068

剑指offer(C++)——从尾到头打印链表

题目描述 输入一个链表,从尾到头打印链表每个节点的值。 思路: (1)由于链表只能从头到尾进行遍历,于是我们就想如果能把链表的指针翻转过来,我们就可以实现从尾到头的输出了。但是这里有...
  • YF_Li123
  • YF_Li123
  • 2017-04-21 20:48:56
  • 466

剑指offer之从尾到头打印链表(Python)

输入一个链表,从尾到头打印链表每个节点的值。
  • u010636181
  • u010636181
  • 2017-10-14 20:32:02
  • 105

从尾到头打印链表(Java)

题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。**解析:很多人第一反应是从头到尾输出将会比较简单,于是自然想到把链表中连接结点的指针反转过来,改变链表的方向即可。但该方法会改变原来链表...
  • IDog149tao
  • IDog149tao
  • 2017-03-23 19:25:08
  • 479

剑指offer--python --c++--从尾到头打印链表

输入一个链表,从尾到头打印链表每个节点的值。 python解法:先将链表中的值插入到序列l中,之后再将序列逆置,则输出序列即可 def printListFromTailToHead(se...
  • suanzhaogao
  • suanzhaogao
  • 2017-05-24 11:39:18
  • 676

剑指offer-Java-从尾到头打印链表

题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。 方式1:非递归的实现 public class PrintListReverse{ public static void main ...
  • zcl1359205840
  • zcl1359205840
  • 2016-08-26 14:47:29
  • 415

算法学习记录三(C++)--->从尾到头打印链表每个节点的值

描述 输入一个链表,从尾到头打印链表每个节点的值。 思路对于这种颠倒顺序的问题,我们应该就会想到栈,后进先出。所以,这一题要么自己使用栈,要么让系统使用栈,也就是递归。注意链表为空的情况。时间复杂度为...
  • Deft_MKJing
  • Deft_MKJing
  • 2017-07-31 15:30:10
  • 660
收藏助手
不良信息举报
您举报文章:从尾到头打印链表
举报原因:
原因补充:

(最多只允许输入30个字)