狠狠撸

狠狠撸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. 骑士游历
Ad

More Related Content

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
?
香港六合彩
香港六合彩香港六合彩
香港六合彩
aaveow
?
香港六合彩
香港六合彩香港六合彩
香港六合彩
香港六合彩 香港六合彩
?
ev2oik
ev2oikev2oik
ev2oik
香港六合彩 香港六合彩
?
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
?
Seq2seq Model introduction with practicing hands on coding.pdf
Seq2seq Model introduction with practicing hands on coding.pdfSeq2seq Model introduction with practicing hands on coding.pdf
Seq2seq Model introduction with practicing hands on coding.pdf
FEG
?
并发编程交流
并发编程交流并发编程交流
并发编程交流
bluedavy lin
?
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)
wangjiaz
?
第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
?
Seq2seq Model introduction with practicing hands on coding.pdf
Seq2seq Model introduction with practicing hands on coding.pdfSeq2seq Model introduction with practicing hands on coding.pdf
Seq2seq Model introduction with practicing hands on coding.pdf
FEG
?
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)
wangjiaz
?

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
?
Ad

第04章 栈和队列(java版)