OPTR
# # #,* #,*,( #,*,( #,*,(,- #,*,(,- #,*,( #,* #
OPND
3 3 3 3,7 3,7 3,7,2 3,5 3,5 15
INPUT
3*(7-2)# *(7-2)# (7-2)# 7-2)# -2)# 2)# )# )# # #
OPERATE
Push(opnd,’3’) Push(optr,’*’) Push(optr,’(’) Push(opnd,’7’) Push(optr,’-’) Push(opnd,’2’) Operate(7-2)
}
建立空链栈:
struct stacknode *top=NULL; //初始化空栈,不带头结点
从空栈始,依次调用进栈算法建立含有若干个元素的 非空栈。
4.2 栈的应用举例
栈结构具有的后进先出特性,致使栈成为程序 设计中常用的工具。 一、栈的应用举例-----数制转换
十进制N和其它进制数的转换是计算机实现计 算的基本问题,其解决方法很多,其中一个简单算 法基于下列原理:
栈1底
栈1顶
栈2顶
图 两 个 栈 共 享 存 储 单 元 示 意 图
栈2底
三 链栈
栈的链式存储结构称为链栈,是插入和删 除操作仅限制在表头位置上进行的单链。由 于只能在链表头部进行操作,栈顶指针就是
链表的头指针。链栈的结点定义:
typedef struct stacknode
{ ElemType data; …… struct node *next;
现。特别注意栈空和栈满的条件; 3、熟练掌握队列的顺序表示、链表表示以及相应操作的实
现。特别是循环队列中队头与队尾指针的变化情况。