3.1栈(堆栈) .12栈的顺序存储结构及其基本运算的实现 顺序栈的存储结构描述 舨序栈:即栈的顺序存储结构,是利用一组地址连 续的存储单元(数组)依次存放栈的数据元素。同时 附设指针top指示栈顶元素在顺序栈中的位置。 顺序找的类型定义: f define maxsize 50 typedef int(char,,) Elemtype;如何访问栈顶 typedef struct 元素? ElemType data Sastack *s sI int top;/栈]元置 6 SqStack
6 3.1.2栈的顺序存储结构及其基本运算的实现 顺序栈:即栈的顺序存储结构,是利用一组地址连 续的存储单元(数组)依次存放栈的数据元素。同时 附设指针top指示栈顶元素在顺序栈中的位置。 3.1 栈(堆栈) 一. 顺序栈的存储结构描述 # define MaxSize 50 typedef int(char,…) Elemtype; typedef struct {ElemType data[MaxSize]; int top; //栈顶元素位置 } SqStack; 顺序栈的类型定义: SqStack *s, s1; 如何访问栈顶 元素?
3.1栈(堆栈) 版房的带点 多s->data[表示第计1个进栈的元素 多s>dat>op表示栈顶元素;「"高地址 多当->top=-表示空栈; top c|2 多当s->top= MaxSize-表示栈满 b1 多栈中元素个数或栈的长度为: dataa0低地址 s>top+1。 7
7 3.1 栈(堆栈) s->data[i]表示第i+1个进栈的元素; s->data[s->top]表示栈顶元素; 当s->top=-1表示空栈; 当s->top=MaxSize-1表示栈满; 顺序栈的特点: data top 低地址 高地址 0 1 2 n s a b c d 栈中元素个数或栈的长度为: s->top+1
3,1栈(堆栈) 顺序栈的基本运算 ●始化线 Initstack(s) 建立一个新的空栈s,实际上是将栈顶指针指向-1即可 void Initstack(sqstack *&s) 0钱5进行初始化 s=( Sqstack2) malloc( sizeof( Sqstack);顺序栈s S->top=-1; Maxsize 空栈 top 栈底
8 二. 顺序栈的基本运算 ⚫初始化栈InitStack(s) void InitStack(SqStack *&s) { //对栈s进行初始化 s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1; } 建立一个新的空栈s,实际上是将栈顶指针指向-1即可。 top -1 栈底 0 1 2 … MaxSize-1 顺序栈s 空栈 3.1 栈(堆栈)
3,1栈(堆栈) 顺序栈的基本运算 销毁线 Clearstack(s) void Clearstack( sqStack *&s) free(s) 顺序栈s 求的长度 tacklength(③) MaxSize-1 int StackLength(sqstack *s top→2 return(s->top+1) 1栈底 9
9 二. 顺序栈的基本运算 ⚫销毁栈ClearStack(s) void ClearStack(SqStack *&s) { free(s); } int StackLength(SqStack *s) { return(s->top+1); } ⚫ 求栈的长度StackLength(s) top -1 栈底 0 1 2 … MaxSize-1 顺序栈s 3.1 栈(堆栈)
3,1栈(堆栈) 顺序栈的基本运算 兴等为会CEmy() Sta aStac return(s->top==-1) 显示线中元素 Disp Stack③ void Dispstack( sqstack *s) 从栈顶到栈底顺序显示栈中所有元素。 int 1; for〔i=s>top;i>=0;i printf("%oc", s->datai printf("in") 10
10 二. 顺序栈的基本运算 ⚫判断栈是否为空StackEmpty(s) int StackEmpty(SqStack *s) { return(s->top==-1); } ⚫ 显示栈中元素DispStack(s) void DispStack(SqStack *s) {//从栈顶到栈底顺序显示栈中所有元素。 int i; for (i=s->top;i>=0;i--) printf("%c ",s->data[i]); printf("\n"); } 3.1 栈(堆栈)