全球旧事资料 分类
信息学奥赛之
数据结构栈与队列
栈及其应用
一栈的特点:
栈是一种线性表,对于它所有的插入和删除都限制在表的同一端进行,这一端叫做栈的“顶”,另一端则叫做栈的“底”,其操作特点是“后进先出”。二栈的抽象数据定义:抽1、栈的数组表示顺序栈s为栈、p为指向栈顶的指针typestackrecorddataarray1mofdatatypep0me
dvarsstack2、栈的链接表示链式栈
Co
stmmaxTypeStackarray1mofdatatypeVarSstackp0m
bottom
当栈的容量无法估计时,可采用链表结构--链式栈链式栈的栈顶在链头无栈满问题,空间可扩充进栈(插入)与出栈(删除)都在栈顶处执行三栈的基本操作:
typestackstrucstrucrecorddatastypeli
kstacke
dvarsstack
1进栈操作pushsx:往栈中推入元素x的项目;若pm则writeoverflow否则pp1spx2出栈操作pops:将栈顶元素中弹出;若p0则writeu
derflow否则pp13读栈顶元素topsx:把栈顶元素的值读到变量x中,栈保持不变;若p0则writeerror否则xsp4判栈是否为空semptys:这是一个布尔函数,当栈sp中没有元素即t0时,称它为空栈,函数取真值,否则值为假。若p0则semptytrue否则semptyfalse5链式栈的进栈、出栈操作
f信息学奥赛之
数据结构栈与队列
进栈:数据元素进栈时,先生成一个新结点P,置数据域为X、指针域指向原栈顶结点,栈顶结点指向P。(在链头插入一个新结点)出栈:先从栈顶取出数据元素至X,然后把S结点指到它的直接后继结点,原S结点清空。(在链头删去一个结点)
四栈的应用
1、表达式的计算1表达式的三种形式:中缀表达式:运算符放在两个运算对象中间,如:213;后缀表达式(逆波兰表示法):运算符紧跟在两个操作数之后,实现无括号和无优先处理,只须从左到右完成计算。如:表达式213表示为后缀表达式为213;832654表示为83265-4+前缀表达式:同后缀表达式一样,不包含括号,运算符放在两个运算对象的前面,如:213。2表达式的计算设表达式中的运算对象为个位数设表达式中的运算对象为个位数设表达式中的运算对象为个位数由于后缀表达式中没有括号,不需判别优先级,计算严格从左向右进行,故计算一个后缀表达式要比计算机一个中缀表达式简单得多。3计算后缀表示法的算法思路是:1、建立一个栈,放操作数2、从左到右读入表达式若为数,则将它转换为数值后入栈若为运算符,则从栈中弹出两个数到X、Y中,然后以“X运算符Y”计算,并将结r
好听全球资料 返回顶部