@递归调用执行情况如下: 0 print(0); 主程序 prin(1)(4)输出:1 返回 print(2); (3)输出:2,2 w=3 运行结果 print(w) (2)输出:3,3,3 结束 P top top (3)1 top 2)2 2)2 (2)2 一(1)3[(u)3[(1)3[()3 计算机教研室 第11页 2021/2/19
Data Structure 数 据 结 构—— 第 4 章 栈 和 队 列 胡建华 2021/2/19 计算机教研室 第11页 递归调用执行情况如下: 主程序 (1) print(w) w=3; 3 print(2); (1)w=3 top (2) 输出:3, 3, 3 w 2 print(1) ; (2)w=2 (1)w=3 top (3) 输出:2, 2 w 1 print(0); (3)w=1 (2)w=2 (1)w=3 top (4)输出:1 w 0 (4)w=0 (3)w=1 (2)w=2 (1)w=3 top w (3) 输出:2, 2 (2) 2 (1) 3 top (4)输出:1 (3) 1 (2) 2 (1) 3 top (2) 输出:3, 3, 3 (1 ) 3 top 返回 (3) 1 (2) 2 (1) 3 top (4) 0 结束 (1) 运行结果: 1, 2,2, 3,3,3
4.3队列 章线和队列 计算机教研宦 第12页 2021/2/19
Data Structure 数据结构—— 第4章栈和队列 胡建华 2021/2/19 计算机教研室 第12 页 4.3 队列
@43.1队列的结构特点和操作 ·队列( queue)是限定只能在表的一端进行插入,在表的 另一端进行删除的线性表 容许插入的一端称做队尾(rear) 容许删除的一端称为队头( front) 队列的特点: 先进先出( Fisrt In First Out)FIFO 2 a 3 ●0e0000 n 队出队列 入队列 队头 队尾 计算机教研宦 第13页 2021/2/19
Data Structure 数 据 结 构—— 第 4 章 栈 和 队 列 胡建华 2021/2/19 计算机教研室 第13页 4.3.1 队列的结构特点和操作 • 队列(queue)是限定只能在表的一端进行插入,在表的 另一端进行删除的线性表。 • 容许插入的一端称做队尾(rear) • 容许删除的一端称为队头(front) • 队列的特点: 先进先出(Fisrt In First Out) FIFO a1 a2 a3 ……… an 出队列 入队列 队头 队尾
@队列的抽象数据类型 B ADT Queue f 2数据对象:D={a11∈ Elemnet, i=1,2, n,n≥0} 的数据关系:R1={<a1,a1>a1,a1∈D, i=1,2,…,n} 约定a1为队头,an为队尾 章线和队列 计算机教研宦 第14页 2021/2/19
Data Structure 数 据 结 构—— 第 4 章 栈 和 队 列 胡建华 2021/2/19 计算机教研室 第14页 队列的抽象数据类型 ADT Queue { 数据对象:D={ai |ai∈ElemSet, i=1,2,……,n,n≥0} 数据关系:R1={< ai-1 , ai >| ai-1 , ai ∈D, i=1,2,……,n} 约定a1为队头,an为队尾
@基本操作: InitQueue(&Q DestroyQueue(&Q) ClearQueue(&Q 雪 QueueEmpty(Q GetHead ( Q, &e) EnQueue(&Q, e) ∥进队列 章线和队列 DeQueue(&Q,&e)}∥(队列 计算机教研宦 第15页 2021/2/19
Data Structure 数据结构—— 第4章栈和队列 胡建华 2021/2/19 计算机教研室 第15 页 基本操作: InitQueue(&Q) DestroyQueue(&Q) ClearQueue(&Q) QueueEmpty(Q) GetHead(Q,&e) EnQueue(&Q,e) //进队列 DeQueue(&Q,&e)} //出队列