栈的应用,不用我多说了,在编程中,栈是一个很有用的数据结构,但是你亲 手实现过它吗?我有段时间和群里的人聊天,他们都很厉害的,你知道的,就是那 种的。我问他们会用栈吗?口水战就开始了,他们都不削,说太简单了,我就说你 们亲手自己实现过栈的各种功能吗?有的说实现过,有的说没有,有人说我早就不 自己实现了,都是直接用 STL 中的,我说,那你应该很厉害的。为什么我怎么说呢?

我见过的用 STL 中的人,要么就是很熟练了这些数据结构了,要么就是连最基本的栈 是怎么实现的都不知道,就是会用 STL 中的那几个函数罢了。现在你回过头来看看你 自己,你是哪种呢?即使用 STL 用的很吊,那你懂得 STL 吗?懂和会用是两个问题, 而我,一个很菜的鸟,什么都是从最底层做起的,我喜欢自己去实现每一个问题, 从中受益是很大的,同时,那些很标准的库,是工作中是必须要用的,至少没有 bug ,或者 bug 少,比自己写的强,但是自己写,那是一种所为!不是吗?而自己每 次写都有不同的收获,不是说我就在这个地步混的。呵呵!现在,我就来每一步一 步的来实现我的栈,后期,同时我也会推出 STL 的解析博文。希望大家支持,呵呵, 那都是后话了。哦,对了,将来,即使你去应聘,人家都很喜欢的问你,用过 STL , 懂得 STL 的实现吗?如果你不会,那就糟糕了。闲话少扯,进入正题。

栈,你得懂得基本东西,什么叫栈,就是所谓的“先来后出”,言简意赅吧, 先进来的元素最后出去。同时,只能由栈顶进出元素。不可否认,这是你必须会 的。如果不会了,那就糟糕透顶了,你该买豆腐去自杀了。

每个人实现自己的栈,是不同的,至少上面的那个“先来后出”是相同的。现 在来讲讲我的栈实现方法。

首先,链表实现,你要构造一个链表,对吧。每个节点都有数据域和指针域,这个不

用多说了。

 

// 节点结构

struct Node

{

int value;

Node *next;

};

这是节点的结构。

但是我的链表是这样实现的。我的第一个节点作为头指针,什么也不放,就是说光光就

是指向下一个节点的结构。

Head            节点1        节点2        节点3        节点4    等等……

 

 

这个就是链表的结构,而我的头指针就是直接指向第一节点的。如图, head 中的数据域不放任何数据,同时如果放入数据,那也是没有意义的。这就是用头指针建立链表。上图,节点就是栈顶。出栈就是从节点 4 开始的。

下面列出对栈的一些操作:

void Push(Node *, const int &); // 在栈顶插入, 入栈

       int Pop(Node *); // 出栈

       int GetTop(Node *); // 取栈顶元素

       void MakeEmpty(Node *); // 置空栈

       int IsEmpty(Node *)const ; // 判断栈是否为空

对栈的一些简单操作,都在这几个函数中完成。

代码贴出,仅供参考!

代码下载:http://download.csdn.net/source/3197548

相关文章:

  • 2021-10-03
  • 2021-05-25
  • 2022-01-23
  • 2021-09-10
  • 2021-12-14
  • 2021-05-22
  • 2022-12-23
  • 2021-11-02
猜你喜欢
  • 2021-11-20
  • 2021-12-08
  • 2021-07-25
  • 2021-11-05
  • 2021-05-30
  • 2021-06-10
  • 2021-05-29
相关资源
相似解决方案