清华大学出版社 TSINGHUA UNIVERSITY PRESS 将结点送回可利用栈 输入:可利用栈栈顶指针TOP(默认);送回可利用栈的结点序号p 输出:结点p入栈后的可利用栈栈顶指针TOP(默认)。 PROCEDURE DISPOSE (p) NEXT()=TOP; TOP=p RETURN 从可利用栈取得一个结点 输入:可利用栈的栈顶指针TOP(默认)。 输出:退栈后的可利用栈栈顶指针TOP(默认);存放取得结点序号 的变量p。 PROCEdURE NEW(p) p=TOP: TOP=NEXT(TOP) RETURN
将结点送回可利用栈 输入:可利用栈栈顶指针TOP(默认);送回可利用栈的结点序号p。 输出:结点p入栈后的可利用栈栈顶指针TOP(默认)。 PROCEDURE DISPOSE(p) NEXT(p)=TOP; TOP=p RETURN 从可利用栈取得一个结点 输入:可利用栈的栈顶指针TOP(默认)。 输出:退栈后的可利用栈栈顶指针TOP(默认);存放取得结点序号 的变量p。 PROCEDURE NEW(p) p=TOP; TOP=NEXT(TOP) RETURN
清华大学出版社 TSINGHUA UNIVERSITY PRESS 带链栈的入栈运算 输入:带链栈的栈顶指针top;入栈的元素值x 输出:元素x入栈后的带链栈栈顶指针top。 PROCEDURE PUSHLL (top, x) NeW(p) [从可利用栈取得一个新结点] v(p=x [置新结点数据域] NeXT(p=top [置新结点指针域] top=p [改变栈顶指针」 RETURN
带链栈的入栈运算 输入:带链栈的栈顶指针top;入栈的元素值x。 输出:元素x入栈后的带链栈栈顶指针top。 PROCEDURE PUSHLL(top,x) NEW(p) [从可利用栈取得一个新结点] V(p)=x [置新结点数据域] NEXT(p)=top [置新结点指针域] top=p [改变栈顶指针] RETURN
清华大学出版社 TSINGHUA UNIVERSITY PRESS #includestdlib h struct node /*定义结点类型* i et d /*数据元素类型* struct node米next; pushll(top, x) ET X struct node ktop; struct node米p; p=(struct node *)malloc(sizeof (struct node)) p->d=x;p->next=*top;/*置新结点的数据域与指针域* 冰tOp=p; /*改变栈顶指针*/ return:
#include "stdlib.h" struct node /*定义结点类型*/ { ET d; /*数据元素类型*/ struct node *next; }; pushll(top,x) ET x; struct node **top; { struct node *p; p=(struct node *)malloc(sizeof(struct node)); p->d=x; p->next=*top;/*置新结点的数据域与指针域*/ *top=p; /*改变栈顶指针*/ return; }
清华大学出版社 TSINGHUA UNIVERSITY PRESS 带链栈的退栈运算 输入:带链栈的栈顶指针top 输出:退栈后的带链栈栈顶指针top;存放退出结点元素 值的变量y。 PROCEdURE POPLL (top, y) y=V(top) [取出栈顶元素值] p=top top=NEXT(p) [改变栈顶指针」 DISPOSE (p) [被删除结点送回可利用栈] RETURN
带链栈的退栈运算 输入:带链栈的栈顶指针top。 输出:退栈后的带链栈栈顶指针top;存放退出结点元素 值的变量y。 PROCEDURE POPLL(top,y) y=V(top) [取出栈顶元素值] p=top top=NEXT(p) [改变栈顶指针] DISPOSE(p) [被删除结点送回可利用栈] RETURN
清华大学出版社 TSINGHUA UNIVERSITY PRESS #includestdlib h struct node /*定义结点类型* i et d /*数据元素类型* struct node米next; opll(top, y) ET y; struct node ***top; i struct node *p y=*top->d /*取出栈顶元素值*/ p=*top 冰tOp=p->next; /*改变栈顶指针* free(p); return;/*释放被删除结点后返回*/
#include "stdlib.h" struct node /*定义结点类型*/ { ET d; /*数据元素类型*/ struct node *next; }; popll(top,y) ET y; struct node **top; { struct node *p; y=*top->d; /*取出栈顶元素值*/ p=*top; *top=p->next; /*改变栈顶指针*/ free(p); return; /*释放被删除结点后返回*/ }