• 剑指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 }

     

  • 相关阅读:
    管理信息系统 第三部分 作业
    密码保护
    实现搜索功能
    完成个人中心—导航标签
    个人中心标签页导航
    评论列表显示及排序,个人中心显示
    完成评论功能
    管理信息系统 课程设计
    期末作品检查
    管理信息系统 第三部分 作业
  • 原文地址:https://www.cnblogs.com/wjy-lulu/p/8268173.html
Copyright © 2020-2023  润新知