专题20 栈课件 高考信息技术总复习.pptxVIP

  • 1
  • 0
  • 约4.97千字
  • 约 26页
  • 2026-01-18 发布于广东
  • 举报

专题20栈;考点1栈的概念

1.栈是一种__________的线性结构。

2.栈仅允许在表的一端进行插入或删除,进行插入或删除操作的一端称为栈顶,将表的另一端称为栈底。

3.位于栈顶位置的元素称为栈顶元素,位于栈底位置的元素称为栈底元素。;考点2栈的特性

1.先进后出、后进先出。

2.有限序列性

(1)栈中的元素是有限的。栈可以是空的,也可以包含多个元素。

(2)栈中的所有元素呈线性关系,每个元素只有一个前驱点(栈底元

素没有前驱点)和一个后继点(栈顶元素没有后继点)。;考点3栈的基本操作(数组实现的栈)

1.建栈

(1)栈一般按顺序结构存储,用__________来实现。

(2)在Python中一般用列表(数组)创建栈。

(3)设栈顶指针top指向栈顶元素所在的位置。若栈为空,则top值

为_______。

2.入栈

(1)数据只能从栈顶入栈,新入栈的元素称为栈顶元素。

(2)每次数据元素入栈,栈顶指针变量top值加1。

;3.出栈

(1)数据只能从栈顶出栈,每次出栈的元素是栈顶元素,栈顶元素出

栈后,其前驱顺位为新的栈顶元素。

(2)栈顶元素取出,栈顶指针变量top值减1,若栈为_______,即top=-1,则无法进行出栈操作。

;考点4链栈(链表实现的栈)

利用链式存储方式实现的栈称为链栈,一般用单向链表实现。基本操作如下:

(1)链表___________即为栈顶指针top。

(2)入栈时,新入栈的元素作为链表新的头节点。

(3)出栈时,把头节点出栈。;判断正误,正确的画“√”,错误的画“×”。

1.栈的数组实现中,栈顶指针top初始值为0,表示栈为空。()

2.若元素入栈顺序为a,b,c,d,e,f,已知最后出栈的元素依次为c,f,则其出栈顺序可能是b,e,a,d,c,f。()

3.若栈的初始状态和最终状态均为空,则元素的出栈序列总数与入栈顺序无关。();判断方法:遍历出栈序列,每出栈一个元素,则在入栈序列中划掉该元素。

可知,该元素左边的是已经入栈的元素,该元素右边的是尚未入栈的元素。;则下一个出栈的元素只能是当前划掉元素的左边最近一个未出栈(没划掉)元素,或右边任意一个未入栈元素。(图示中,D之后出栈的是C,也可以是E、F、G)

若出栈序列中的下一个元素与上述描述不符,则说明该出栈序列错误。(图示中,C之后出栈的只能是B或E、F、G);(1)栈的数组实现。

st=[0]*n#创建长度为n的空栈

top=-1#栈中无元素,top指向-1

top+=1#有元素入栈,栈顶指针后移

st[top]=A#修改栈顶元素为新元素A

top-=1#直接将栈顶指针指向前一位,表示元素出栈

print(top+1)

#列表下标第一位从0开始,0~top是栈中所有元素的下标,输出top+1即是输出栈中元素的个数;(2)利用列表自带方法实现。

st=[]#创建空栈

st.append(A)#直接添加元素在列表末尾,不用修改栈顶指针

#栈顶元素即列表末尾元素st[-1]

st.pop()#直接删除列表末尾元素表示出栈

print(len(st))#输出栈中元素的个数;逆波兰表达式是将运算符放置在对应的运算数字之后的一种数学表达式。比如中缀表达式“5+((6+7)*8)-9”转换为逆波兰表达式是“567+8*+9-”,可以发现逆波兰表达式里没有括号。具体的转换方法为:

(1)先把中缀表达式里每一步运算都加上括号,如“((5+((6+7)*8))-9)”。

(2)然后将对应的操作符(运算符)挪到对应的括号后面,如“((5((67)+8)*)+9)-”。

(3)最后去掉括号就得到了后缀表达式“567+8*+9-”。;(4)具体代码如下:

s=567+8*+9-

lis=s.split()

print(lis)

st=[0]*len(s)

top=-1

foriinrange(len(lis)):

if0=lis[i]=9:

top+=1

st[top]=int(lis[i])

else:

num2=st[top]

num1=st[top-1]

;考向一栈的出栈入栈序列

例1[2025浙江选考]有后缀表达式“13+2*3+2*”,现利用栈计算该表达式:从左向右扫描,遇到数字时,数字入栈;遇到运算符时,两个元素出栈,用运算符计算,

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档