前言
栈与队列这一章与线性表的链式结构有很多相似的地方,因此这一章就没有进行详细的剖析。
一、栈
定义: 限定在仅在表尾进行插入和删除操作的线性表
二、理解栈
2.1专有名词
这里就用存钱的方式解释: 栈顶:从罐口存钱; 栈底:存钱罐的底部 入栈:存钱 出栈:有一天突然后悔了,不想存那么多,想通过罐口将今天存进去的钱夹出来,这个时候很大的概率是夹到今天存的钱; 特点:入栈元素先进后出;
2.2栈的操作
结构定义: 顺序存储结构:
typedef struct{
ElemType data[MaxSize];
int top;
}SqStack;
两栈共享空间:
typedef struct{
ElemType data[MaxSize];
int top1;
int top2;
}SqDoubleStack;
top1,top2主要是分清共享的两栈,方便进行插入和删除工作。 链式存储结构:
typedef struct StackNode{
ElemType data;
struct StackNode *next;
}StackNode,*LinkStackptr;
typedef struct LinkStack{
LinkStackptr top;
int count;
}LinkStack;
这里链式结构分成了两个部分,第结构体1 主要是定义结点,第二个结构体主要是定义结点之间的关系。
总结
在下一讲会类似于分析线性表,对栈的操作进行分析,例如对不同结构的入栈操作和出栈操作进行对比
|