//数据结构--栈
什么是栈:
栈实际上也是线性表的一种,只是他比较特殊,为什么特殊呢?因为他一端是封闭的,不允许进行插入和删除元素操作,另一端是开口
,允许进行插入和删除元素操作。
栈的特点:
栈的特点是先进后出,后进先出。比如:
我拿一个箱子,要往里面放书,先放:
数学书一本
英文书一本
化学书一本
程序设计书一本
现在我要将这些书全部拿出来,顺序就是
数学书
英文书
化学书
程序设计书
从上面的这个例子看到先进后出,后进先出,这个就是一个现实生活中一个栈的抽象例子。
好了,现在理解了什么是栈,那么现在我们开始用C语言来实现栈。
在写代码前我们先来看看栈中的一些名词:
入栈:往栈中插入一个元素,我们称之为入栈运算;
出栈:从栈中删除一个元素,我们称之为出栈运算;
问来又来了,我们进行一系列的插入和删除操作后,我们怎么知道栈,是否还有空间进行插入新元素。和栈是否为空;
这时是不是就得用一个标识来记录呢!就得用一个指向栈顶的变量。这样我们进行插入和删除操作时,就可以通过指向
栈顶的这个指针来判断当前栈的状态了;
变量意思:
//--------------------------------------------
//s 栈存储空间
//m 栈存储空间容量
//top 栈顶指针;
//x 入栈元素
//--------------------------------------------
下面是C语言代码实现:
//建立空栈:
//入栈运算
//退栈运算
//读栈顶
//状态检查
//输出所有元素
例子:
什么是栈:
栈实际上也是线性表的一种,只是他比较特殊,为什么特殊呢?因为他一端是封闭的,不允许进行插入和删除元素操作,另一端是开口
,允许进行插入和删除元素操作。
栈的特点:
栈的特点是先进后出,后进先出。比如:
我拿一个箱子,要往里面放书,先放:
数学书一本
英文书一本
化学书一本
程序设计书一本
现在我要将这些书全部拿出来,顺序就是
数学书
英文书
化学书
程序设计书
从上面的这个例子看到先进后出,后进先出,这个就是一个现实生活中一个栈的抽象例子。
好了,现在理解了什么是栈,那么现在我们开始用C语言来实现栈。
在写代码前我们先来看看栈中的一些名词:
入栈:往栈中插入一个元素,我们称之为入栈运算;
出栈:从栈中删除一个元素,我们称之为出栈运算;
问来又来了,我们进行一系列的插入和删除操作后,我们怎么知道栈,是否还有空间进行插入新元素。和栈是否为空;
这时是不是就得用一个标识来记录呢!就得用一个指向栈顶的变量。这样我们进行插入和删除操作时,就可以通过指向
栈顶的这个指针来判断当前栈的状态了;
变量意思:
//--------------------------------------------
//s 栈存储空间
//m 栈存储空间容量
//top 栈顶指针;
//x 入栈元素
//--------------------------------------------
下面是C语言代码实现:
//建立空栈:
//入栈运算
//退栈运算
//读栈顶
//状态检查
//输出所有元素
例子: