算法练习三:从尾到头打印链表

原创 2015年11月19日 16:11:33
/*输入一个链表,从尾到头打印链表每个节点的值。 
思路1:反转链表,然后输出*/
/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
vector<int> printListFromTailToHead(struct ListNode* head)
{
	vector<int> res;
	if(NULL == head)
		return res;
	ListNode *p = NULL;
	ListNode *q = head;
	ListNode *r = head->next;
	while(q)
	{
		q->next = p;
		p = q;
		q = r;
		if(r)
			r = r->next;
	}
	while(p)
	{
		res.push_back(p->val);
		p = p->next;
	}
	return res;
}


/*输入一个链表,从尾到头打印链表每个节点的值。 
思路2:利用栈,然后输出*/
/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
vector<int> printListFromTailToHead(struct ListNode* head)
{
	vector<int> res;
	if(NULL == head)
		return res;
	stack<int> TempS;
	while(head)
	{
		TempS.push(head->val);
		head = head->next;
	}
	while(!TempS.empty())
	{
		res.push_back(TempS.top());
		TempS.pop();
	}
	return res;
}


从尾到头打印链表

紧接着又练习了一个链表的操作——从尾到头打印链表。     牛客网AC地址:http://www.nowcoder.com/books/coding-interviews/d0267f7f55b34...
  • yiyiwudian
  • yiyiwudian
  • 2015年06月29日 20:35
  • 2089

从尾到头打印链表(java)

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

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

本文以单链表为例进行说明 链表中的数据是以结点来表示的,每个结点的构成:元素 + 指针,元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 单链表是由自身元素和指向下一个结点的指针构成...
  • u012689336
  • u012689336
  • 2016年10月11日 17:59
  • 773

从尾到头打印链表每个节点的值。

题目描述:输入一个链表,从尾到头打印链表每个节点的值。 分析 (1):可以把链表倒转,然后从头到尾输出链表的值,但此时链表的结构会改变,不建议如此做。 (2):把链表的值从头到尾加入到栈中,输出栈...
  • liulian1
  • liulian1
  • 2016年03月11日 10:50
  • 1060

【剑指offer】从尾到头打印单链表

题目描述: 输入一个链表,从尾到头打印链表每个节点的值。 输入: 每个输入文件仅包含一组测试样例。 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类...
  • mmc_maodun
  • mmc_maodun
  • 2014年05月05日 10:08
  • 3157

输入一个链表的头结点,从尾到头反过来打印出每个节点的值

可以通过递归或非递归实现从尾到头打印链表。 非递归采用栈来实现,因为栈是“先进后出”,每遍历一个节点的时候,把该节点压入栈中,当遍历完整个链表后,再从栈顶逐个输出节点的值,即出栈。这样输出的节点的顺...
  • wanglelelihuanhuan
  • wanglelelihuanhuan
  • 2016年06月12日 22:13
  • 1230

【数据结构】单链表—从尾到头输出单链表 — 栈 / 递归

题目:输入一个链表的头节点,从尾到头反过来打印每个节点的值思路一:遍历的顺序是从头到尾,而输出的顺序是从尾到头,也就是说第一个遍历的最后一个输出,最后一个遍历的第一个输出,这是先进后出,我们可以借助栈...
  • liuxiaoqian_
  • liuxiaoqian_
  • 2016年07月26日 12:01
  • 732

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

描述 输入一个链表,从尾到头打印链表每个节点的值。 思路对于这种颠倒顺序的问题,我们应该就会想到栈,后进先出。所以,这一题要么自己使用栈,要么让系统使用栈,也就是递归。注意链表为空的情况。时间复杂度为...
  • Deft_MKJing
  • Deft_MKJing
  • 2017年07月31日 15:30
  • 419

JAVA实现从尾到头打印链表(《剑指offer》)

最近在刷《剑指offer》里的编程题,但是网上关于《剑指offer》的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码(当然也有部分是借鉴了网...
  • qq_15062527
  • qq_15062527
  • 2015年10月01日 15:14
  • 2351

从尾到头打印链表

输入一个链表,从为到头打印链表每个节点的值 /** * 解法一——使用栈的出栈和入栈,完成数据的逆序 */ import java.util.ArrayList; import java.util...
  • CSDN_FlyYoung
  • CSDN_FlyYoung
  • 2017年06月28日 21:43
  • 145
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法练习三:从尾到头打印链表
举报原因:
原因补充:

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