栈操作举例 TOP a a 2 MAXSIZE 栈底 栈顶 2AB C top=1(空) top=2(A、B、C进栈) 上一页 3.AB 4.AB CDEF 「停止放映 op (C出栈) top=MAXSIZE-l (栈满) 下一页 第11页
下一页 上一页 停止放映 第 11 页 栈操作举例 a1 a2 …… an 栈底 栈顶 MAXSIZE TOP 1. top=-1 2. A B C (空栈) top=2 (A、B、C进栈) 3. A B top=1 (C出栈) 4. A B C D E F top=MAXSIZE-1 (栈满)
(4)算法1-8进栈算法 ●算法步骤: step1 判别栈满否,若满,则显示栈溢 出信息,停止执行;否则,执行 step 2; Step2 栈顶指针top上移(加1); 上一页 Step3 「停止放映 在top所指的位置插入元素x。 下一页 第12页
下一页 上一页 停止放映 第 12 页 (4) 算法1-8 进栈算法 ⚫ 算法步骤: –step1 判别栈满否,若满,则显示栈溢 出信息,停止执行;否则,执行 step 2; –Step2 栈顶指针top上移(加1); –Step3 在top所指的位置插入元素x
算法1-8进栈算法程序 push (int x) if(top== MAXSIZE-1)/*判满?*/ printf(“栈上溢!n”); exit (1) else/米不满,则可以进栈*/ top++;/*栈指针加1米 stack[top]=x;/*元素x进栈*/ 上一页 「停止放映 下一页 示例 第13页
下一页 上一页 停止放映 第 13 页 算法1-8 进栈算法程序 push(int x) { if(top = = MAXSIZE -1) /* 判满? */ { printf(“栈上溢!\n”); exit (1); } else /* 不满,则可以进栈 */ { top + +;/* 栈指针加 1 */ stack [ top ] = x ;/* 元素 x进栈*/ } } 示例
(5)算法1-9出栈算法 ●算法步骤 step1判别栈是否为空;若空,则输出 栈下溢信息,并停止执行;否则, 执行step2 step2弹出(删除)栈顶元素; step3栈顶指针top下移(减1)。 step4返回出栈元素 上一页 「停止放映 下一页 第14页
下一页 上一页 停止放映 第 14 页 (5) 算法1-9 出栈算法 ⚫ 算法步骤: – step1 判别栈是否为空;若空,则输出 栈下溢信息,并停止执行;否则, 执行step2; – step2 弹出(删除)栈顶元素; – step3 栈顶指针top下移(减1)。 – step4 返回出栈元素
算法1-9出栈算法程序 int pop() intx if( top 1)/*判空* printf(栈下溢\n” exit(1) e⊥se /*出栈 t x=stack[ top I top--;/*栈顶指针减1*/ 上一页 「停止放映 return x 下一页 示例 第15页
下一页 上一页 停止放映 第 15 页 算法1-9 出栈算法程序 pop( ) { int x; if( top = = -1) /* 判空 */ { printf(“ 栈下溢 \n”); exit(1); } else /* 出栈 */ { x = stack [ top ]; top - - ;/* 栈顶指针 减1*/ } return x ; } 示例 int