- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pascal_第10讲_栈及应用选编
趣味栈及其应用;1952年10月,在抗美援朝上甘岭战役中,
战士们正在向弹夹压子弹;杂技演员表演叠罗汉的时候,最后上去的人总是第一个下来 ;洗碗是我们常做的一件家务活,
我们在洗碗的时候,一般情况
下,最先洗干净的碗总是放在
下面,而后洗干净的碗放在上
面;
取碗吃饭时,却是从最顶上开
始拿取。
也就是说,后洗的碗先用。;竖直摆放的图书;货栈;装水的杯子;栈在计算机中的应用;栈在计算机中的应用; Fac(3)----→fac(2)--→fac(1)--→fac(0)=1
↑ 3*fac(2)←2*fac(1)←1*fac(0);“后进先出”(LAST IN FIRST OUT,简称LIFO) 是它的特点,其实这是计算机程序设计中一个常见的数据结构——栈(STACK),它是一种存储数据的容器,就像装水的杯子一样。
水杯里的水按照“后进先出”的顺序被倒进倒出,存储在栈中数据也是是按照“后进先出”的方式被插入和删除的。;首先我们要搞清楚它本身的属性和能够实现的基本操作。
;存储数据的容器,像装水的杯子一样。。。。。嗯!那它应该可以插入和删除数据。对了,栈用什么来装这些数据啊 ;栈的特点:
后进先出
栈这种数据结构就是有三个基本属性和五个基本操作 ;对于一个栈,给定一个输入项目a,b,c。如果输入的顺序规定为abc,试写出全部可能的输出序列就是a先入栈,b再入栈,c最后入栈;对于一个栈,给定一个输入项目a,b,c。如果输入的顺序规定为abc,试写出全部可能的输出序列就是a先入栈,b再入栈,c最后入栈;
A;
A;
B;
B;
C
B
A;题目:输入一个正整数n,试分离并输出其各位数字。例如,输入n=1234,则输出1,2,3,4。(保证n不超出integer的范围);{代码1:}
{输入一个正整数n,试分离并输出其各位数字}
PROGRAM Separate(INPUT, OUTPUT);
VAR
v, n : integer;
BEGIN {MAIN}
writeln(Input n:);
readln(n);
while n 0 do
begin
v := n mod 10; {分离出n的个位数字}
write(v:2);
n := n div 10; {去除n的个位数字}
end; {while}
END.;{代码2:}
{先判断出n是个几位数,再从高位开始分离数字并输出}
PROGRAM Separate(INPUT, OUTPUT);
VAR v, n, h : integer;
FUNCTION Highest(n : integer) : integer; {判断n是个几位数,最大为32767}
begin
end; {Highest见下一片}
BEGIN {MAIN}
writeln(Input n:);
readln(n);
h := Highest(n); {判断n是个几位数}
while h 0 do {分离数字并将其入栈}
begin
v := n div h; {分离出n的最高位数字}
write(v:2);
n := n mod h; {去除n的最高位数字}
h := h div 10;{n位数降1}
end; {while}
END. ;FUNCTION Highest(n : integer) : integer; {判断n是个几位数,最大为32767}
Begin
if n 10000 then
Highest := 10000
else if n 1000 then
Highest := 1000
else if n 100 then
Highest := 100
else if n 10 then
Highest := 10
else
Highest := 1;
end; {Highest}
;{递归方法}
{输入一个正整数n,试分离并输出其各位数字}
Procedure fen(n:integer);
VAR
v: integer;
BEGIN
v := n mod 10; {分离出n的个位数字}
n := n div 10; {去除n的个位数字}
if n0 then fen(n);
write(v:1);
END;;{代码3:}
{利用栈解决分离数字问题:输入一个正整数n,试分离并输出其各位数字}
PR
文档评论(0)