栈的表示和实现: 顺序栈 /---栈的顺序存储表示--一 #define STACK INIT SIZE 100; #define STACKINCREMENT 10: typedef struct SElemType *base; /栈底指针 SElemType *top; /栈顶指针 int stacksize; /最大容量 }SqStack;
栈的表示和实现: 顺序栈 //----- 栈的顺序存储表示 ----- #define STACK_INIT_SIZE 100; #define STACKINCREMENT 10; typedef struct { SElemType *base; //栈底指针 SElemType *top; //栈顶指针 int stacksize; //最大容量 } SqStack;
>顺序栈的图示 约定栈顶指针指向栈顶 元素的下一个位置 99 ● n 当栈用顺序结构存储时, n-1 An 栈的基本操作如建空栈、进 n-2 a-1 栈、出栈等如何实现? 100 S.stacks a2 S.top 0 s.base
… an an-1 … a2 a1 99 n n-1 n-2 1 0 100 S.stacksize S.top S.base ➢ 顺序栈的图示 约定栈顶指针指向栈顶 元素的下一个位置 当栈用顺序结构存储时, 栈的基本操作如建空栈、进 栈、出栈等如何实现?
栈空的标记:top=base; 插入新栈顶元素时,指针top增1: 删除栈顶元素时,指针top减1。 top E D top C B top B base base A base A
栈空的标记:top=base; 插入新栈顶元素时,指针top增1; 删除栈顶元素时,指针top减1。 B A E D C B A top base top base top base
▣ 顺序栈的基本操作 初始化操作InitStack(SqStack&S) 99 参数:S是存放栈的结构变量 功能:建一个空栈S n n-1 n-2 an-1 100 S.stacksize S.top 0 a S.base
初始化操作InitStack(SqStack &S) 参数:S是存放栈的结构变量 功能:建一个空栈S ❑ 顺序栈的基本操作 … an an-1 … a2 a1 99 n n-1 n-2 1 0 S.stacksize S.top S.base 100
Status InitStack(SqStack&S){ /∥构造一个空栈$ S.base =(SElemType*)malloc (STACK_ INIT SIZE*sizeof (SElemType)); if (!S.base)exit (OVERFLOW); S.top S.base; S.stacksize STACK INIT SIZE return OK; //InitStack
Status InitStack( SqStack& S) { // 构造一个空栈S } // InitStack S.base = (SElemType*) malloc (STACK_ INIT_SIZEsizeof (SElemType)); if (!S.base) exit (OVERFLOW); S.top = S.base; S.stacksize = STACK_INIT_SIZE; return OK;