全国二级考试公共基础部分重点与难点-Java程序设计.DOC

全国二级考试公共基础部分重点与难点-Java程序设计.DOC

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全国二级考试公共基础部分重点与难点-Java程序设计

全国二级考试公共基础部分重点与难点 顺序存储结构与链式存储结构 图1 线性表的顺序存储示意 图2 线性单链表的存储结构示意 顺序存储结构 链式存储结构 优点 逻辑相邻,物理相邻 可随机存取任一元素 存储空间使用紧凑,存储密度 =1 插入、删除操作不需要移动大量的元素,修改指针即可 存储空间动态分配,表容量容易扩充 存储空间可以不必连续 缺点 插入、删除操作需要移动大量的元素 预先分配空间需按最大空间分配,利用不充分 表容量难以扩充 指针需要占用额外的存储空间,存储密度 1 链表只能顺序存取元素,不可以随机存取 入栈与出栈 栈:只允许在一端插入和删除的线性表叫栈,允许插入和删除的一端称为栈顶 (top),另一端称为栈底(bottom)。 特点: 后进先出 (LIFO,Last In First Out) 或 先进后出(FILO) 顺序栈用一维数组S(1:m)实现,top=0表示栈空,top=m表示栈满。– bottom)+1 进栈(push):也叫入栈,即在栈顶位置插入一个新元素,先将top +1,然后将新元素插入到top所指的位置;当top已指向栈存储空间的最后一个位置时,说明栈已满,若再进行进栈操作则出现“上溢”错误。 出栈(pop):也叫退栈,即取出栈顶元素并赋给一个指定的变量,先将栈顶元素赋值给一个指定的变量,然后将top-1;当top为0时,说明栈已空,若再进行出栈操作则出现“下溢”错误。 读(get)栈顶元素:将栈顶元素赋值给一个指定的变量,top不变。 图 3 顺序栈的进栈、出栈运算示意 【常考题型】已知若干元素的入栈顺序,如A、B、C、D、E,问:哪些是不可能的出栈顺序?哪些是可能的出栈顺序? 解题提示:可将栈想象成一个杯子,入栈就好比往杯子里放园球,先放进去的在下面,后放进去的在上面,取球的时候必须先取上面的,后取下面的。凡是出入次序不存在矛盾的元素序列就是可能的出栈顺序。比如本题可能的顺序有:1)依次将球A、B、C、D、E全都放进去后再取出来,则出栈顺序为EDCBA;2)先依次将A、B、C放进去,然后取出上面的2个,再将D、E放进去,然后都取出来,则出栈顺序为CBEDA;3)先依次将A、B放进去,然后取出上面的1个,再将C、D放进去,然后都取出来,最后将E放进去再取出来,这时出栈顺序是BDCAE。其它可能的顺序不再罗列。 思考:DBCAE、DEBAC是可能的出栈顺序吗? (答:不是,因为D是第一个出栈的,说明其前面的A、B、C还没出栈,那么这3个元素再出栈时必须符合CBA的顺序) 循环队列中的元素个数 队列:只允许在一端插入、在另一段删除的顺序表叫队列,允许删除的一端称为队头 (front),允许插入的一端称为队尾(rear)。队列用一维数组实现sq[M] 特点: 先进先出 (FIFO,First In First Out) 队列的进队、退队原则: 入队时队尾指针先进一, rear = rear + 1,再将新元素按 rear 指示位置加入。 退队时队头指针先进一,front = front + 1, 再将下标为 front 的元素取出。 队满时再入队将产生“溢出”错误; 队空时再退队将产生“下溢”错误。 图 4 队列的入队、退队运算示意 循环队列: 就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用,如图 5所示。 循环队列的运算规则: 每进行一次入队运算,队尾指针就进一,当rear=m+1时,置rear=1; 每进行一次退队运算,队头指针就进一,当front=m+1时,置front=1; 循环队列的状态判断: 为了区分队列是满还是空,设立标志s,当s=1时表示队列非空,当s=0时表示队列空。 循环队列的初始状态为空,即s=0,且rear=front=m; 队列空的条件为s=0; 队列满的条件为s=1且front=rear。 m … 2 1 Q(1:m) 8 7 F 6 E 5 D 4 C 3 B 2 A 1 Q(1:8) 8 X 7 F 6 E 5 D 4 C 3 B 2 A 1 Y Q(1:8) 8 X 7 F 6 E 5 D 4 C 3 B 2 1 Y Q(1:8) 图 5 循环队列的运算示意 【常考题型】求循环队列中的元素个数 循环队列里面的个数计算方法: rear front 的时候, num = rear – front; rear front 的时候, num = rear + m – front; 例: 循环队列的存储空间为Q(1:50),初始状态为front=rear=50。经过一系列正常的入队与退队操作后,front=rear=25,则循环队列中的元素个数为? 解题思路:起始时rear=front=

文档评论(0)

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

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

1亿VIP精品文档

相关文档