您的位置:首页 > 理论基础 > 数据结构算法

数据结构算法代码实现——栈和队列(一)

2015-06-11 18:14 351 查看

栈和队列

栈和队列是一种特殊的线性表。
从数据结构角度看:栈和队列也是线性表,其特点性在于栈和队列的基本操作是线性表操作的子集。它们是操作受限的线性表。
从数据类型角度看:它们是和线性表不相同的两类重要的抽象数据类型。


栈的定义

栈(Stack)是限定仅在表尾进行插入或删除操作的线性表。允许经行插入删除操作的表尾被称为栈顶,相应的表头被称为栈底。
向栈中插入一个元素称为入栈(压栈),从栈中删除一个元素称为出栈(退栈)。栈中无数据元素时称为空栈。
栈的特点:先进后出,后进先出(LIFO)。


栈的表示与实现

和线性表类似,栈也有两种存储表示方法即:顺序和链式。

1,栈的链式存储:因为栈也是线性表,所以线性表的不带头结点单链表结构可以作为栈的链式结构。这样,就可以利用单链表的操作了。

如:

单链表初始化的表头可以作为栈的表头;

单链表 ListInsert(S, 1, e)可以作为栈的入栈操作Push;

单链表ListDeleteS,1, *e)可以作为栈的出栈操作Pop;

单链表的头插法,可以创建一个栈。

2,栈的顺序存储:有关详细信息请看教材46页

//-----栈的顺序存储表示------
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;


栈的基本操作

测试代码:

测试结果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: