狠狠撸

狠狠撸Share a Scribd company logo
第 4 章 栈和队列
? 4.1 栈
? 4.2 队列
? 4.3 优先队列
? 4.4 递归算法
目的和要求
? 目的:使用栈或队列作为求解复杂应用问题的
有效手段和措施。
? 内容:栈和队列抽象数据类型及它们的实现和
应 用;优先队列;递归算法设计。
? 要求:掌握栈和队列抽象数据类型,以及顺序
和链式存储结构实现;理解对于怎样的应用问
题,需要使用栈或队列,以及怎样使用。
? 重点:栈和队列的设计和实现;理解递归定义
, 设计递归算法。
? 难点:使用栈或队列求解复杂应用问题;递归
算 法设计。
? 实验:栈和队列及其应用;递归算法。
《数据结构( Java 版)(第 3 版)》
4.1 栈
4.1.1 栈抽象数据类型
4.1.2 顺序栈
4.1.3 链式栈
4.1.4 栈的应用
《数据结构( Java 版)(第 3 版)》
4.1.1 栈抽象数据类
型
栈( stack )是一种特殊的线性表,其插入和删
除操作只允许在线性表的一端进行。
public interface SStack<T>
{ // 栈接口,栈抽象数据类
型
boolean isEmpty(); // 判断是否空栈
void push(T x); // 元素 x 入栈
T pop(); // 出栈,返回当前栈
顶元素
T get(); // 取栈顶元素,未出
栈
}
《数据结构( Java 版)(第 3 版)》
4.1.2 顺序栈
public class SeqStack<T> implements
SStack<T> // 顺序栈类,实现栈
接口
{
Object element[]; // 存储栈数据元素的数
组
《数据结构( Java 版)(第 3 版)》
4.1.3 链式
栈
public class LinkedStack<T> implements SStack<T>
{
private Node<T> top;
}
《数据结构( Java 版)(第 3 版)》
4.1.4 栈的应用
1. 栈是嵌套调用机制的实现基础
2. 使用栈以非递归方式实现递归算法
《数据结构( Java 版)(第 3 版)》
例 4.1 判断表达式中圆括号是否
匹配
《数据结构( Java 版)(第 3 版)》
例 4.2 使用栈计算表达式的
值。
中缀表达式 1+2*(3-4)+5
《数据结构( Java 版)(第 3 版)》
( 1 )将中缀表达式转换为后缀表
达式
《数据结构( Java 版)(第 3 版)》
( 2 )后缀表达式求值
《数据结构( Java 版)(第 3 版)》
4.2 队列
4.2.1 队列抽象数据类型
4.2.2 顺序队列
4.2.3 链式队列
4.2.4 队列的应用
《数据结构( Java 版)(第 3 版)》
4.2.1 队列抽象数据类型
队列( queue )是一种特殊的线性表,其插入和
删除操作分别在线性表的两端进行。
public interface QQueue<T> // 队列接口
{
boolean isEmpty(); // 判断队列是否为
空
void enqueue(T x); // 入队
T dequeue(); // 出队
《数据结构( Java 版)(第 3 版)》
4.2.2 顺序队
列
1. 顺序队列,假溢出
《数据结构( Java 版)(第 3 版)》
2. 顺序循环队列
front=(front+1) % length;
rear=(rear+1) % length;
《数据结构( Java 版)(第 3 版)》
3. 顺序循环队列类
public class SeqQueue<T> implements
QQueue<T>
{
private Object value[];
private int front,rear; // 队
列头尾下标
}
《数据结构( Java 版)(第 3 版)》
4.2.3 链式队列
public class LinkedQueue<T> implements
QQueue<T> // 链式队列类
{ private Node<T> front, rear;
}
《数据结构( Java 版)(第 3 版)》
4.2.4 队列的应用
例 4.3 求解素数环问题。
《数据结构( Java 版)(第 3 版)》
4.3 优先队列
1. 优先队列及其存储结构
2. 优先队列类
public class PriorityQueue<T extends
Comparable<T>>
implements QQueue<T>
例 4.4 进程按优先级调度管理。
《数据结构( Java 版)(第 3 版)》
1. 递归定义
2. 递归算法
f(n)=n×f(n-1)
【例 4.5 】 求 n !。
4.4 递归算法
1 0,1
!
( 1)! ??2
n
n
n n n
=?
= ?
× ??
《数据结构( Java 版)(第 3 版)》
【例 4.6 】 求 Fibonacci 序列
。
0,1
( )
( 1) ( 2) ??2
n n
f n
f n f n n
=?
= ?
? + ??
《数据结构( Java 版)(第 3 版)》
例 4.7 打印数字塔
public static void line(int i)
{
if (i<10)
line(i+1);
System.out.print(String.format("%3d",
i));
}
《数据结构( Java 版)(第 3 版)》
3. 单链表的递归算法
public String toString()
{ return "(" + this.toString(this.head) + ")";
}
public String toString(Node<T> p) // 递归算法
{ if (p==null)
return "";
return p.data.toString() + ", "
+ this.toString(p.next);
}
《数据结构( Java 版)(第 3 版)》
实验 4 栈和队列以及递归
算法
1. 走迷宫
2. 骑士游历

More Related Content

Viewers also liked (6)

Lembram Destes Lugares?Lembram Destes Lugares?
Lembram Destes Lugares?
Luiz Carlos Dias
?
Foz do velho ChicoFoz do velho Chico
Foz do velho Chico
Luiz Carlos Dias
?
ART POMP?IA - EVEN S?O PAULOART POMP?IA - EVEN S?O PAULO
ART POMP?IA - EVEN S?O PAULO
eliete Pinheiro
?
Sistema de información institucional
Sistema de información institucionalSistema de información institucional
Sistema de información institucional
luisalfredomontanez
?
A bagagemA bagagem
A bagagem
Luiz Carlos Dias
?
Enem 2009 primeiro_dia_azul
Enem 2009 primeiro_dia_azulEnem 2009 primeiro_dia_azul
Enem 2009 primeiro_dia_azul
Mariana Correia
?
Lembram Destes Lugares?Lembram Destes Lugares?
Lembram Destes Lugares?
Luiz Carlos Dias
?
Foz do velho ChicoFoz do velho Chico
Foz do velho Chico
Luiz Carlos Dias
?
ART POMP?IA - EVEN S?O PAULOART POMP?IA - EVEN S?O PAULO
ART POMP?IA - EVEN S?O PAULO
eliete Pinheiro
?
Sistema de información institucional
Sistema de información institucionalSistema de información institucional
Sistema de información institucional
luisalfredomontanez
?
Enem 2009 primeiro_dia_azul
Enem 2009 primeiro_dia_azulEnem 2009 primeiro_dia_azul
Enem 2009 primeiro_dia_azul
Mariana Correia
?

Similar to 第04章 栈和队列(java版) (20)

第08章 查找(java版)
第08章  查找(java版)第08章  查找(java版)
第08章 查找(java版)
Yan Li
?
第05章 数组和广义表(java版)
第05章  数组和广义表(java版)第05章  数组和广义表(java版)
第05章 数组和广义表(java版)
Yan Li
?
第02章 线性表(java版)
第02章  线性表(java版)第02章  线性表(java版)
第02章 线性表(java版)
Yan Li
?
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
ArBing Xie
?
第01章 绪论(java版)
第01章  绪论(java版)第01章  绪论(java版)
第01章 绪论(java版)
Yan Li
?
第06章 树和二叉树(java版)
第06章  树和二叉树(java版)第06章  树和二叉树(java版)
第06章 树和二叉树(java版)
Yan Li
?
从模组到类别
从模组到类别从模组到类别
从模组到类别
Justin Lin
?
香港六合彩
香港六合彩香港六合彩
香港六合彩
香港六合彩 香港六合彩
?
ev2oik
ev2oikev2oik
ev2oik
香港六合彩 香港六合彩
?
香港六合彩
香港六合彩香港六合彩
香港六合彩
aaveow
?
Spark tutorial
Spark tutorialSpark tutorial
Spark tutorial
Lin JiaMing
?
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
Frank S.C. Tseng
?
第09章 排序(java版)
第09章  排序(java版)第09章  排序(java版)
第09章 排序(java版)
Yan Li
?
12, string
12, string12, string
12, string
ted-xu
?
香港六合彩
香港六合彩香港六合彩
香港六合彩
香港六合彩 六合彩
?
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
ArBing Xie
?
并发编程交流
并发编程交流并发编程交流
并发编程交流
bluedavy lin
?
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)
wangjiaz
?
闯补惫补并发核心编程
闯补惫补并发核心编程闯补惫补并发核心编程
闯补惫补并发核心编程
wavefly
?
第08章 查找(java版)
第08章  查找(java版)第08章  查找(java版)
第08章 查找(java版)
Yan Li
?
第05章 数组和广义表(java版)
第05章  数组和广义表(java版)第05章  数组和广义表(java版)
第05章 数组和广义表(java版)
Yan Li
?
第02章 线性表(java版)
第02章  线性表(java版)第02章  线性表(java版)
第02章 线性表(java版)
Yan Li
?
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
ArBing Xie
?
第01章 绪论(java版)
第01章  绪论(java版)第01章  绪论(java版)
第01章 绪论(java版)
Yan Li
?
第06章 树和二叉树(java版)
第06章  树和二叉树(java版)第06章  树和二叉树(java版)
第06章 树和二叉树(java版)
Yan Li
?
从模组到类别
从模组到类别从模组到类别
从模组到类别
Justin Lin
?
香港六合彩
香港六合彩香港六合彩
香港六合彩
aaveow
?
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
Frank S.C. Tseng
?
第09章 排序(java版)
第09章  排序(java版)第09章  排序(java版)
第09章 排序(java版)
Yan Li
?
12, string
12, string12, string
12, string
ted-xu
?
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
ArBing Xie
?
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)
wangjiaz
?
闯补惫补并发核心编程
闯补惫补并发核心编程闯补惫补并发核心编程
闯补惫补并发核心编程
wavefly
?

More from Yan Li (6)

Chapter 01 essentials final
Chapter 01 essentials finalChapter 01 essentials final
Chapter 01 essentials final
Yan Li
?
Chapter 05 essentials final
Chapter 05 essentials finalChapter 05 essentials final
Chapter 05 essentials final
Yan Li
?
Chapter 04 essentials final
Chapter 04 essentials finalChapter 04 essentials final
Chapter 04 essentials final
Yan Li
?
Chapter 02 essentials final
Chapter 02 essentials finalChapter 02 essentials final
Chapter 02 essentials final
Yan Li
?
Chapter 03 essentials final
Chapter 03 essentials finalChapter 03 essentials final
Chapter 03 essentials final
Yan Li
?
Introduction to om
Introduction to omIntroduction to om
Introduction to om
Yan Li
?
Chapter 01 essentials final
Chapter 01 essentials finalChapter 01 essentials final
Chapter 01 essentials final
Yan Li
?
Chapter 05 essentials final
Chapter 05 essentials finalChapter 05 essentials final
Chapter 05 essentials final
Yan Li
?
Chapter 04 essentials final
Chapter 04 essentials finalChapter 04 essentials final
Chapter 04 essentials final
Yan Li
?
Chapter 02 essentials final
Chapter 02 essentials finalChapter 02 essentials final
Chapter 02 essentials final
Yan Li
?
Chapter 03 essentials final
Chapter 03 essentials finalChapter 03 essentials final
Chapter 03 essentials final
Yan Li
?
Introduction to om
Introduction to omIntroduction to om
Introduction to om
Yan Li
?

第04章 栈和队列(java版)