预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共48页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

会计学对于(duìyú)程序设计来说:编程语言是工具;数据结构是基础;算法设计是方法。数据结构(shùjùjiéɡòu)数据结构相关(xiāngguān)概念逻辑(luójí)结构物理(wùlǐ)结构线性表线性表的两种存储(cúnchǔ)方式数组的插入(chārù)与删除链表的插入(chārù)与删除线性表的具体(jùtǐ)实现顺序存储与链式存储操作(cāozuò)的对比限定(xiàndìng)仅在表尾进行插入和删除操作的线性表,又称为后进先出(lastinfirstout)线性表(LIFO结构)栈顶——表尾栈底——表头栈的实现(shíxiàn)(一)栈的实现(shíxiàn)(二)栈的基本操作1)过程(guòchéng)init(s,t)—初始化procedureinit;begint:=0;end;2)、过程(guòchéng)push(x)—往栈s中压入一个值为x的数据:procedurepush(vars:stack;x:stype;vart:integer);beginift=mthenwriteln(‘overflow’){上溢}elsebegint←t+1;s[t]←x;end;{else}{x入栈}end;{Push}3)函数pop(s,t)—从栈中弹出一个表目functionpop(vars:stack;vart:integer):stype;beginift=0thenwriteln(‘underflow’){下溢}elsebeginpop←s[t];t←t-1;end;{else}{栈顶元素(yuánsù)出栈}end;{pop}4)函数top(s,t)—读栈顶元素(yuánsù)functiontop(s:stack;t:integer):stype;beginift=0thenwriteln(‘stackempty’)elsetop←s[t];{返回栈顶元素(yuánsù)}end;{top}栈的应用(yìngyòng)【样例3输入(shūrù):】{[}]【样例3输出:】no【样例4输入(shūrù):】<>>>【样例4输出:】noi:=1;t:=0;tt:+0;whilei<=ndobegincases[i]of'(','[','{','<':push(s[i]);')':ifpop<>'('thenbegintt:=1;break;end;'}':ifpop<>'{'thentt:=1;break;end;']':ifpop<>'['thentt:=1;break;end;'>':ifpop<>'<'thentt:=1;break;end;end;inc(i);end;if(t<>0)or(tt<>0)thenwriteln('No')elsewriteln('Yes');end.varf:array[char]ofchar;a:array[0..200]ofchar;s:string;ch:char;p,i,n:longint;functionpop:char;beginpop:=a[p];dec(p);end;procedurepush(x:char);begininc(p);a[p]:=x;end;procedureprint(k:integer);beginwriteln(k);halt;end;beginf['[']:=']';f['(']:=')';f['{']:='}';f['<']:='>';readln(s);p:=0;i:=1;n:=length(s);whilei<=ndobeginiford(f[s[i]])<>0thenpush(s[i])//左括号进栈else//右括号判断beginifp=0thenprint(0);//有多余的右括号iff[pop]<>s[i]thenprint(0);//和前面(qiánmian)的不匹配end;inc(i);end;ifp=0thenprint(1)elseprint(0);end.栈的应用(yìngyòng)3——表达式求值中缀表达式和后缀(hòuzhuì)表达式的特征中缀表达式的运算规则比较多,包括优先级、左右次序和括号;尤其是括号可以改变优先顺序,这就只能在计算的每一步,用肉眼去扫描、观察和比较整个(zhěnggè)表达式中谁的优先级高,就先计算那部分。但用计算机去做就很麻烦,而且效率不高。所以,计算机科学中是把中缀表达式先转换成后缀表达式,在利用计算机来计算后缀表达式的值。后缀表达式又称“逆波兰式”,在后缀表达式中,不存在括号,也不存在优先级的差别,计算过程完全按照运算符出现