顺序栈的应用


栈是一种特殊的线性表,只能在一端进行操作。操作的这端称为栈顶,另一端称为栈底。
特点:先进后出(FILO)

1、元素的入栈顺序为abcde,则下面哪种出栈顺序不正确()出栈和入栈可以交叉进行
A edcba B cabde C dcbae D bcdea

C语言中的栈:满足了栈的定义之后,被人们创建并使用的一个实例
数据结构的栈:描述的仅仅是一种数据结构

栈按照存储分类也分为顺序栈和链式栈

顺序栈的特点:
1、前驱后继
2、连续存储,大小固定
3、空栈不能访问,满栈不能存
4、操作只能在栈顶操作
5、元素先进后出(FILO)

顺序栈的实现:
typedef int DATA_T;
typedef struct stack
{
DATA_T *pHead; //顺序栈的首地址
int size; //顺序栈的大小
int top; //记录栈顶的位置
}STACK;
运算:创建 销毁 入栈 出栈 取栈顶 清空 遍历 满栈/空栈

/*
函数名:createStack
函数功能:创建一个大小为size的顺序栈
函数参数:size : 顺序栈的大小
函数返回值:表结构的首地址
*/
STACK *createStack(int size);

/*
函数名:IsFullStack
函数功能:判断栈是否为满
函数参数:pStack: 表结构的首地址
函数返回值:满栈返回0
*/
int IsFullStack(STACK *pStack);

/*
函数名:IsEmptyStack
函数功能:判断栈是否为空
函数参数:pStack: 表结构的首地址
函数返回值:空栈返回0
*/
int IsEmptyStack(STACK *pStack);

/*
函数名:insertStack
函数功能:入栈
函数参数:pStack: 表结构的首地址 data:入栈的元素
函数返回值:入栈成功返回0
*/
int insertStack(STACK *pStack,DATA_T data);

/*
函数名:popStack
函数功能:出栈
函数参数:pStack: 表结构的首地址
函数返回值:出栈返回原栈顶的元素
*/
DATA_T popStack(STACK *pStack);

/*
函数名:destroyStack
函数功能:销毁顺序栈
函数参数:pStack: 表结构的首地址
函数返回值:销毁成功返回0
*/

队列:
队列也是一种特殊的线性表,队列是由一端进行入队另外一端进行出队的线性表。出队的叫队头,入队的叫队尾
特点:先进先出(FIFO)

顺序队列的特点:
1、前驱后继
2、存储连续,大小固定
3、空队和满队
4、访问队头和队尾
5、先进先出(FIFO)

顺序队列的实现:
typedef int DATA_T;
typedef struct queue
{
DATA_T *pHead; //保存数据元素空间的首地址
int size; //队列的大小
int h; //队头前一个位置的下标
int t; //队尾的下标
}QUEUE;

创建 销毁 入队 出队 判空 判满 遍历

猜你喜欢

转载自blog.csdn.net/qq_43967317/article/details/107850476