剑指offer 面试题5——从头到尾打印链表

题目1511:从尾到头打印链表

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:5825

解决:1758

题目描述:

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

 

输入:

每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。

 

输出:

对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。

 

样例输入:
1

2

3

4

5

-1

样例输出:
5

4

3

2

1

这道题需要从尾到头来打印链表,所以可以先将链表顺序的压入栈中,然后再依次输出就可以了



#include<iostream>

#include<stack>

using namespace std;

struct ListNode

{

	ListNode* next;

	int val;

	ListNode(int x):val(x),next(NULL){}

};

int main()

{

	int va;

	ListNode *root=NULL;

	cin>>va;

	root=new ListNode(va);

	ListNode *ptr0=root;

	ListNode *ptr=NULL;

	while(cin>>va)

	{

		if(va==-1)

			break;

		ptr=new ListNode(va);

		ptr0->next=ptr;

		ptr0=ptr0->next;

	}

	ptr=root;

	stack<int> sta;

	while(ptr!=NULL)

	{

		sta.push(ptr->val);

		ptr=ptr->next;

	}

	while(!sta.empty())

	{

		cout<<sta.top()<<endl;

		sta.pop();

	}

}

  



你可能感兴趣的:(面试题)