数据结构之栈的实现
来源:互联网 发布:苏州淘宝运营工作内容 编辑:程序博客网 时间:2024/04/29 12:47
栈是一种典型的线性表,它非常的简单,实现也很简单,但他的应用却非常的广泛,如函数的递归,一些撤销功能的实现等等!
栈是只能访问头节点的线性表!无论是插入,删除还是查找都只需要访问头节点。
他的实现一般有两种,一种是用向量表的实现,这种方法的有点在于节省空间,但缺点也比较明显,就是不够自由,容易出现栈溢出,当然我们可以通过另外申请空间来解决这个问题,但这样显得比较麻烦!还有一种方法是利用链表来实现!这种方法虽然造成了两倍的空间浪费,但基本不用担心栈溢出的情况,实现起来也非常简单!
下面就是我的c++代码实现:
//stack.h
#ifndef STASK_H#define STACK_Htemplate<class objs_t> class stack{struct node_t{objs_t data;node_t *next;node_t ( objs_t &x=objs_t(), node_t *p=NULL ):data(x),next(p){}};public:stack(){st=NULL;siz=0;}stack(const stack &p){st=NULL;siz=0;node_t *n=p.st;clear();while(n!=NULL){push(n->data);n=n->next;}}~stack(){clear();}void clear(){while (!empty())pop();}bool empty()const{return siz==0;}int size()const{return siz;}void push(objs_t &x){if(siz!=0)st=new node_t(x,st);elsest=new node_t(x,NULL);siz++;}objs_t top()const{return st->data;}void pop(){node_t *p=st;st=st->next;siz--;delete p;}private:node_t *st;int siz;};#endif
可以看到,实现起来相当的简单!但还是值得一提的是他的应用极其广泛,比如中缀表达式的转化成后缀表达式的计算,还有如图的深度优先遍历等等!总之栈作为一种最简单也最常见的数据结构之一,必须要好好理解!
3 0
- 数据结构之栈的实现
- 数据结构之栈的实现
- 数据结构之栈的实现
- 简单数据结构的实现之顺序栈
- 简单数据结构的实现之链栈
- 数据结构之 链栈的实现
- 【数据结构】之链栈的java实现
- 数据结构之栈的java实现
- 数据结构之链栈的实现
- 数据结构之栈的基本功能实现
- 【数据结构】之链栈的java实现
- 数据结构之栈的顺序表实现
- 数据结构之栈的链表实现
- 数据结构之栈的Java实现
- 数据结构之栈的c语言实现
- 【数据结构】之链栈的java实现
- Java 数据结构之栈的基本实现
- 数据结构之栈的Java实现
- 【每日一C之十】const与define区别
- MFC之基于Gdiplus的图像类
- 02.ServletConfig笔记
- Android打开系统相册的问题
- 排序总结之基数排序
- 数据结构之栈的实现
- Java虚拟机(一)
- hdu 2057A + B Again(十六进制或者八进制的A+B)
- QT 数据操 作
- fzu 2107 Hua Rong Dao(状压dp)
- java.util.queue
- mpc5125 uboot 阅读笔记
- 如何删除Eclipse subclipse plugin中记住的SVN用户名密码
- VB 函数 CallByName 的一些用法 (函数动态调用,回调函数)