第三章栈和队列 3.1栈 栈的主要操作如下: (1)、建立一个空栈 (2)、进栈 (3)、出栈: (4)、判断一个栈是否为空? (5)、判断栈是否已满? (6)、获得栈顶元素值 PT PRESS 退出 按续不一列
第三章 栈和队列 3.1栈 栈的主要操作如下: (1)、建立一个空栈 (2)、进栈 (3)、出栈: ( 4 ) 、判断一个栈是否为空? (5)、判断栈是否已满? (6)、获得栈顶元素值 退出
出栈a·41 进栈a1☑2,…a, an 4 a 图3-1 PT PRESS 然东续下一 n
图3-1
3.1.2栈的表示和操作的实现 1、顺序存储的栈 #define MAXSIZE 50 typedef struct {elemtype elem[MAXSIZE]; int top; }SQSTACK; (1)、建立一个空栈 void initstack(SQSTACK *s) {(*s.top=-1;} (2)、判断一个栈是否为空 int stackempty(SQSTACK s) {if (s.top==-1)return 1;else return 0; PT PRESS
3.1.2栈的表示和操作的实现 1、顺序存储的栈 #define MAXSIZE 50 typedef struct {elemtype elem[MAXSIZE]; int top; }SQSTACK; (1)、建立一个空栈 void initstack(SQSTACK *s) {(*s).top=-1; } ( 2 ) 、判断一个栈是否为空 int stackempty(SQSTACK s) {if (s.top==-1) return 1; else return 0; }
(3)、让一个数据元素为e的结点进栈。 算法3.1 如书第42页所示 (4)、出栈一个结点并得到栈顶数据元素值 算法3.2 如书第42页所示 (5)、获取栈顶元素值 void getelm(SQSTACK s,elemtype *e) {if(s.top==-1){printf(“栈空n”);return; *e=s.elem[s.top]; PT PRESS
( 3 )、让一个数据元素为e的结点进栈。 算法 3.1 如书第42页所示 ( 4 )、出栈一个结点并得到栈顶数据元素值 算法 3.2 如书第42页所示 (5)、获取栈顶元素值 void getelm(SQSTACK s, elemtype *e) { if (s.top==-1) {printf(“栈空\n”); return; *e=s.elem[s.top]; }
1、接存储的栈 (1)、建立一个空栈 NODEPTR top; top=NULL; (2)、让一个数据元素为e的结点进栈 算法3.3 如书第43页所示 PT PRESS 然东续了一列 n
1、接存储的栈 (1)、建立一个空栈 NODEPTR top; top=NULL; (2)、让一个数据元素为e的结点进栈 算法 3.3 如书第43页所示