顺序栈中数据元素和栈顶指针之间的对应 关条 op top DCBA B top A A 〔a)空栊 〔b〕插入A 〔c)插入B,C,D〔d)册除D,C 图4-2栈顶指针和栈中元索之间的关系
顺序栈中数据元素和栈顶指针之间的对应 关系
静态教组实现栈结构 # define maxsize64/*栈的最大容量*/ typedef datatype int;/*栈元素的数据类型* typedef struct datatype data[maxsizel int top; int base, shestack;/顺序栈定义*/ shestack*s;/*顺序栈的实现*/ Stackdata[o 数组 Stackdata maxsize] 栈顶指针,用整数 栈底 表示为数组下标 图4-3栈的数組表示
静态数组实现栈结构 #define maxsize 64 /* 栈的最大容量*/ typedef datatype int; /*栈元素的数据类型*/ typedef struct { datatype data[maxsize]; int top; int base; } seqstack; /*顺序栈定义*/ seqstack *s; /*顺序栈的实现 */
顺序栈的模块说明 置空栈(栈的初始化)操作: initstack(seqstack*s) datatype data[] S->top=0 S->base=0;
顺序栈的模块说明 置空栈(栈的初始化)操作: initstack(seqstack *s ) { datatype data[maxsize]; s->top=0; s->base=0; }
◆判栈空操作: int empty(seqstack*s if(s->top==s->base return true. else return false
判栈空操作: int empty(seqstack *s;) { if(s->top==s->base) return true; else return false; }
◆进栈操作: seqstack *Push(seqstack*s, datatype x) /*将元素x插入顺序栈s的顶部* k if(s->top==maxsize t printf("overflow") return NULL, se s->datals->top =x, S->top++,) return s
进栈操作: seqstack *Push(seqstack *s,datatype x) /* 将元素x插入顺序栈s的顶部*/ { if (s->top==maxsize) { printf("overflow"); return NULL; } else { s->data[s->top]=x; s->top++; } return s; }