栈与队列(java版)PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

栈满条件? top==stackElem.length
栈的长度? top
栈顶元素? stackElem[top-1]
12
3.1 栈
数据结构(Java语言描述)
3.1.3 顺序栈及其基本操作的实现
章节目录 作业布置 结束放映
2.顺序栈类的描述(书P71-与P33顺序表类对照学习)
public class SqStack implements IStack {
……
作业布置
// 求栈数据元素个数函数
public int length( )
结束放映
{ …… }
// 取栈顶元素的函数
public Object peek ( ) {
if (!isEmpty()) // 栈非空 return top.getData( ); // 栈顶元素
else return null;
去的栈顶元素值。
a0 a1 … … an-2 an-1
top
19
3.1 栈
数据结构(Java语言描述)
2)顺序栈的出栈操作 pop() 的实现(算法 3.2)
章节目录 (2)算法步骤:
作业布置
a1 a2 … … an-1 an
结束放映 a)若栈空,则返回空值
top
if (top==0) return null;
…} …
}
14
3.1 栈
数据结构(Java语言描述)
2. 顺序栈类的描述(见教材P71)
…… 章节目录 public class SqStack implements IStack {
作业布置
// 入栈操作的函数 public void push( Object x) { …… }
结束放映
// 出栈操作的函数 public void pop ( ) { …… }
3. 链栈基本操作的实现
章节目录 1) 求链栈的长度操作 length ()的实现
作业布置 (1) 操作要求: 计算出链栈中所包含的数据元素的个数
结束放映 并返回其值。
(2) 方法 与求单链表长度的方法相同。
top 21 18 30 75 42 56 ∧
章节目录 (3) 算法
作业布置 public Object pop () throws Exception {
结束放映
if (isEmpty() ) return null;
else return stackElem[--top];
} //算法3.2结束
时间复杂度为:O(1)
21
3.1 栈
数据结构(Java语言描述)
public Object pop(); }
顺序栈
实现此接口的方法有两种:
链栈
10
3.1 栈
数据结构(Java语言描述)
3.1.3 顺序栈及其基本操作的实现
章节目录 1. 顺序栈
作业布置
非空栈
stackElem
结束放映
0 1 …… n-1
a0 a1 … … an-1
maxSize-1
top=n
0 1 2 …… 空栈
6)2、1、3、4; 7)2、1、4、3; 8)2、3、4、1; 9)2、3、1、4 ; 10)2、4、3、1;
11)3、2、1、4; 12)3、2、4、1; 13)3、4、2、1;
14)4、3、2、1。
8
3.1 栈
数据结构(Java语言描述)
3.1.2 栈的抽象数据类型描述
章节目录 1.基本操作
top= 0; }
} …… 13
3.1 栈
数据结构(Java语言描述)
2. 顺序栈类的描述(见教材P71)
…… 章节目录 public class SqStack implements IStack {
// 栈判空
作业布置
public boolean isEmpty( ) {
return top== 0;
// 输出函数(从栈顶到栈底)
public void display () {
Node p=top;
while(p!=null) {
System.out.print(p.getData( ).tostring( )+" " )
} p=p.getNext();
}
}
26
3.1 栈
数据结构(Java语言描述)
数据结构(Java语言描述)
3.1.4 链栈及其基本操作的实现
章节目录 作业布置 结束放映
1. 链栈 top
思考
an-1
an-2
如下问题如何描述?
栈空条件? top==null
a0 ∧
栈的长度?
需从栈顶开始沿着next 指针依次对结点逐个进 行点数才能确定。
栈顶元素? top.getData( )
23
// 输出函数(从栈顶到栈底) public void display () {
for (int i = top - 1; i >= 0; i--) System.out.print(stackElem[i].toString() + " ");
}
}
15
3.1 栈
数据结构(Java语言描述)
3. 顺序栈基本操作的实现
结束放映 (2) 栈是“后进先出”的线性表(LIFO)或 “先 进后出”的线性表(FILO)

a0 a1 a2 … an-1

栈底
栈顶
5
3.1 栈
3.1.1 栈的概念
数据结构(Java语言描述)
章节目录
如下图所示的是铁路调度站形象地表
作业布置 示栈的“后进先出”特点。
结束放映
6
3.1 栈
3.1.1 栈的概念
作业布置 结束放映
if (top == stackElem.length) throw new Exception("栈已满")
b.[若栈不满,则将新元素x 压入栈顶,并修 正栈顶指针]
statckElem[top]=x; top=top+1;
statckElem[top++]=x
17
3.1 栈
数据结构(Java语言描述)
章节目录 2.栈的抽象数据类型的Java接口描述
public interface IStack{
作业布置
public void clear();
结束放映
public boolean isEmpty(); public int length();
public Object peek();
public void push(Object x) throws Exception;
public void clear( ) {
top= null;
} // 判空函数 public boolean isEmpty( ) {
return top== null;
}
} ……
24
3.1 栈
数据结构(Java语言描述)
2. 链栈类的描述(书中P73-74)
章节目录
public class LinkStack implements IStack {
stackElem
……
maxSize-1
top=0
11
3.1 栈
数据结构(Java语言描述)
3.1.3 顺序栈及其基本操作的实现
章节目录 1. 顺序栈 0 1 …… n-1 作业布置 stackElem a0 a1 … … an-1
结束放映
思考 如下问题如何描述? 栈空条件? top==0
top=n
3.1 栈
数据结构(Java语言描述)
3.1.4 链栈及其基本操作的实现
章节目录 2. 链栈类的描述(书中P73-74)
作业布置 结束放映
Import cho2.Node; public class LinkStack implements IStack {
private Node top; // 栈置空函数
else stackElem[top++] = x;
} //算法3.1结束
时间复杂度为:O(1)
18
3.1 栈
数据结构(Java语言描述)
3. 顺序栈基本操作的实现
章节目录 2)顺序栈的出栈操作 pop ( )的实现(算法 3.2)
作业布置 结束放映
(1) 操作要求: 将栈顶元素从栈中移去,并返回被移
数 据 结 构(Java语言描述)
第三章 栈与队列
-
1
第三章 栈 与 队 列
章节目录 作业布置
3.1 栈
数据结构(Java语言描述)
教学内容
结束放映
3.2 队列
3.3 栈与队列的比较
3.4 栈与队列的综合应用举例
第三章 栈 与 队 列
数据结构(Java语言描述)
章节目录 作业布置 结束放映
教学重点与难点
章节目录 1)顺序栈的入栈操作 push (x)的实现(算法 3.1)
作业布置 (1) 操作要求:
结束放映
插入元素x使其成为顺序栈中新的栈
顶元素。
a0 a1 … …
an-1 x
top top
16
3.1 栈
数据结构(Java语言描述)
1)顺序栈的入栈操作 push (x)的实现(算法 3.1)
章节目录 (2) 算法步骤: a.[判断顺序栈是否为满,若满则抛出异常]
或 if (isEmpty()) return null;
b)若栈不空,则移去栈顶元素并返回其值 top=top-1;
return stackElem[top];
return stackElem[--top]; 20
3.1 栈
数据结构(Java语言描述)
2) 顺序栈的出栈操作 pop ()的实现(算法 3.2)
1)顺序栈的入栈操作 push (x)的实现(算法 3.1)
章节目录 (3) 算法
作业布置 public void push (Object x) throws Exception {
结束放映
if (top == stackElem.length) throw new Exception("栈已满");
3.1.4 链栈及其基本操作的实现
章节目录 作业布置 结束放映
1. 链栈
栈的链式存储结构称为链栈,是运算受限的 单链表,其插入和删除操作仅限制在链表的表头 位置上进行,故链栈没有必要象单链表一样附加 头结点,栈顶指针即为链表的头指针。
top
an-1
an-2
a0 ∧
注意: 链栈中指 针的方向
栈底
22
3.1 栈
}
……
}
253.1 栈数源自结构(Java语言描述)2. 链栈类的描述(书中P73-74)
章节目录
public class LinkStack implements IStack {
……
// 入栈操作的函数
作业布置 public void push( Object x) { …… }
结束放映
// 出栈操作的函数 public void pop ( ) { …… }
数据结构数据结构javajava语言描述语言描述31作业布置作业布置作业布置作业布置结束放映结束放映结束放映结束放映章节目录章节目录章节目录章节目录311311栈的概念栈的概念是仅限制在表尾迚行插入和删除操作仅限制在表尾迚行插入和删除操作的特殊线性表限制操作的表尾端称为殊线性表限制操作的表尾端称为栈顶另一另一端称为端称为栈底栈是后迚先出的线性表lifo戒先迚后出的线性表filo数据结构数据结构javajava语言描述语言描述31作业布置作业布置作业布置作业布置结束放映结束放映结束放映结束放映章节目录章节目录章节目录章节目录311311栈的概念栈的概念如下图所示的是铁路调度站形象地表示栈的后迚先出特点
数据结构(Java语言描述)
章节目录
思考题:
作业布置
结束放映
设有编号为1,2,3,4的四辆 列车,顺序进一个栈式结构的站台 ,具体写出这四辆列车开出车站的 所有可能的顺序。
7
3.1 栈
3.1.1 栈的概念
数据结构(Java语言描述)
章节目录 作业布置 结束放映
解答:
四辆车出站的所有可能顺序为:
1)1、2、3、4; 2)1、2、4、3; 3)1、3、2、4; 4)1、3、4、2; 5)1、4、3、2;
private Object[] stackElem;
private int top;
//构造一个容量为maxSize的空栈
public SqStack (int maxSize) { stackElem = new Object[maxSize];
} top = 0;
// 栈置空
public void clear( ) {
结束放映
} // 求栈数据元素个数函数
public int length( ) {
return top;
} // 取栈顶元素的函数
public Object peek ( ) {
if (!isEmpty()) // 栈非空 return stackElem[top-1]; // 栈顶元素
else
return null;
Insert(n, x)
Delete(n-1)
队列
Insert(n, x)
Delete(0)
栈和队列是两种操作受限的线性表, 是两种常用的数据类型。
3.1 栈
3.1.1 栈的概念
数据结构(Java语言描述)
章节目录 作业布置
(1) 栈是仅限制在表尾进行插入和删除操作的特 殊线性表,限制操作的表尾端称为“栈顶”, 另一 端称为“栈底”
作业布置
1)栈的置空操作: clear( )
结束放映
2)栈的判空操作: 3)求栈的长度:
isEmpty( ) length( )
4)取栈顶元素操作: 5)入栈操作: 6)出栈操作:
peek( ) push( x ) pop( )
9
3.1 栈
数据结构(Java语言描述)
3.1.2 栈的抽象数据类型描述
重点:
栈、队列的特点; 栈、队列基本操作的实现算法
难点:
栈、队列的应用
第三章 栈 与 队 列
数据结构(Java语言描述)
通常称,栈和队列是限定插入和删
章节目录 除只能在表的“端点”进行的线性表。
作业布置 结束放映
线性表
Insert(i, x) 0≤i≤n Delete(i) 0≤i≤n-1

相关文档
最新文档