栈的结构特点和操作
栈是限定只能在表的一端进行插入和删除的线性表,在表中,允许插入和删除的一端称为“栈顶”,不允许插入和删除的一端称为“栈底”。栈的元素进出是按照“先进后出,后进先出”的顺序进行。和线性表类似,栈也有两种存储方法顺序栈和链栈。
顺序栈
顺序栈是指利用顺序存储分配实现的栈。同时附设top指针指示栈顶元素在顺序栈中的位置。用一维数组来描述顺序栈中数据元素的存储区域,并预设一个最大的存储空间。对于top指针,由于数组的第一个元素的下标为0,所以初始化top=-1;表示是个空栈。输出栈内数据元素时,可以利用循环变量 i <= S.top;来输出。由于顺序栈的插入和删除只能在栈顶进行,所以顺序栈的一些相关操作比顺序表要简单的多。具体C语言实现代码如下:
#include<stdio.h>
#define TRUE 1
#define FALSE 0
/***************************************************************************************************
栈的顺序存储表示
****************************************************************************************************/
const int STACK_INIT_SIZE = 100; //顺序栈默认的初始分配最大空间量
const int STACKINCREMENT = 10; //默认的增补空间量
typedef struct {
int *elem; //存储数据的数组
int top; //栈顶指针
int stacksize; //当前分配的最大容量
int incrementsize; //约定的增补空间量
}SqStack;
/*****************************************************************************************************
建表
*******************************