数据结构——栈
栈:仅限在表尾进行插入或删除操作的线性表。表尾段称为栈顶(top),表头端称为栈底(bottom)。
特点:先进先出
栈的存储方式:顺序栈和链栈
一.栈的结构
1.顺序栈
顺序栈:利用一组地址连续的存储单元依次存放元素
一般在初始化设定空栈时不限定栈的最大容量,而是先为栈分配一个基本容量,在应用过程中,当栈的空间不够使在逐段扩大。
顺序栈的结构体定义如下:
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;//栈的当前可使用的最大容量
}SqStack;
也可定义为如下结构体:
#define MaxSize 100; //栈的初始容量
typrdef struct{
ElemType data[MaxSize];
int top; //栈顶元素的位置
}SqStack;
2.链栈
链栈:以单链表的方式存放元素
链栈的结构体定义如下:
typedef struct node{
ElemType data;
struct node *next;
}LinkStack;
链栈的操作易于实现,不做讨论。
二.栈的常见应用
1.数制转换
对输入的任意一个非负十进制整数,打印输出与其等值的二进制数。