1、存储空间分配不同
顺序栈——顺序分配
(1)在申明顺序栈类型时,就已经确定顺序栈所占空间,此处空间为一块连续的存储单元;
(2)而确定空间之后,经过后续不断有元素进栈,栈中的元素位置会发生变化,同时可能出现栈满的情况
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int top; //栈指针
} SqStack; //声明顺序栈类型
链栈——动态分配
进栈一个元素,就给该元素分配空间,相对于顺序栈而言,更便于元素的修改
typedef char ElemType;
typedef struct linknode
{
ElemType data;
struct linknode *next; //指针域
} LinkStNode; //链栈类型定义
2、数据域不同
(1)顺序栈的数据域一般设置为数组
(2)链栈的数据域只能是便是单个值的变量