pascal_第10讲_栈及应用选编.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档