影醉阏轩窗

衣带渐宽终不悔,为伊消得人憔悴。
扩大
缩小

剑指Offer(三):从尾到头打印链表


说明:

  1.本系列是根据《剑指Offer》这个系列做的一个小笔记。

  2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难。

  3.刚开始准备刷LeetCode、LintCode,突然看见一个大神研究生正在刷这个系列,故跟着大神学习。

  4.在别人基础之上进行部分优化,总结自己的观点。


 

问题:

  输入一个链表,返回一个反序的链表。

思路:

  这题太简单了,什么方法都可以!首先肯定是遍历链表,之后怎么办都可以--->>>放在数组、链表、栈、队列、vector.......都可以了

程序: 

  我之前都是用vector,所以这次就用stack实现一下!

 1 #include <iostream>
 2 #include <stack>
 3 using namespace std;
 4 /*
 5 typedef struct DATA
 6 {
 7     int sNumb;
 8     char sName[10];
 9     float sMath;
10 }DATA;//结构体定义比较类型
11 */
12 
13 typedef int DATA;
14 struct SNode
15 {
16     DATA data;
17     SNode* pNext;
18 };
19 SNode* g_pHead = NULL;//第一个链表是空链表
20                       //从头插入一个数据
21 void AddHead(DATA data)
22 {
23     SNode* p = new SNode;//申请一个堆空间,8字节
24     p->data = data;
25     p->pNext = g_pHead;
26     g_pHead = p;//把新插入的节点当做头
27 }
28 
29 int main(int argc, char*argv[])
30 {
31     stack<DATA> sta;
32     AddHead(1);
33     AddHead(2);
34     AddHead(3);
35     AddHead(4);
36     SNode* p = g_pHead;
37     cout << "元数据:";
38     while(p)
39     {
40         sta.push(p->data);
41         cout << p->data;
42         p = p->pNext;
43     }
44     cout << endl;
45     cout << "颠倒之后数据:";
46     while(!sta.empty())
47     {
48         cout<<sta.top();
49         sta.pop();
50     }
51     return 0;
52 }

 

 

 

 

 

 

 

posted on 2018-01-11 14:19  影醉阏轩窗  阅读(122)  评论(0编辑  收藏  举报

导航

/* 线条鼠标集合 */ /* 鼠标点击求赞文字特效 */ //带头像评论