第3章栈和队列 本章主要介绍以下内容: 栈的概念、存储结构及其基本操作 队列的概念、存储结构及其基本操作 栈与队列的应用举例 西师大学数学与信启学院 限出
ぜ3【 ᴸ়䭏݇ ᴀゴЏ㽕ҟ㒡ҹϟݙᆍ˖ l ᷜⱘὖᗉǃᄬټ㒧ᵘঞ݊ᴀ᪡ l 䯳߫ⱘὖᗉǃᄬټ㒧ᵘঞ݊ᴀ᪡ l ᷜϢ䯳߫ⱘᑨ⫼В՟ ߎ䗔
3.1栈 3.2队列 西师大学数学与信启学院
3.1 ᷜ 3.2 䯳߫
3.栈 3.1.1栈的定义 栈是一种特殊的线性表。其特殊性在于限定插入 和删除数据元素的操作只能在线性表的一端进行。如 下所示: a1,a2,a3y…,a 插入和删除端 进行插入和删除的一端是浮动端,通常被称为栈 顶,并用一个“栈顶指针”指示;而另一端是固定端, 通常被称为栈底。我们经常将栈用下图31的形式描 述 西师大学数学与信启学院
3.1 ᷜ 3.1.1 ᷜⱘᅮН ᷜᰃϔ⾡⡍⅞ⱘ㒓ᗻ㸼DŽ݊⡍⅞ᗻѢ䰤ᅮᦦܹ ߴ䰸᭄ܗ㋴ⱘ᪡া㛑㒓ᗻ㸼ⱘϔッ䖯㸠DŽབ ϟ᠔⼎˖ 䖯㸠ᦦܹߴ䰸ⱘϔッᰃ⍂ࡼッˈ䗮ᐌ㹿⿄Ўᷜ 乊ˈᑊ⫼ϔϾ³ᷜ乊ᣛ䩜´ᣛ⼎˗㗠ϔッᰃᅮッˈ 䗮ᐌ㹿⿄ЎᷜᑩDŽ៥Ӏ㒣ᐌᇚᷜ⫼ϟ3-1ⱘᔶᓣᦣ 䗄˖ a1 , a2 , a3 , ..., an ᦦܹߴ䰸ッ
栈顶top a2 图3-1 西师大学数学与信启学院
an ... a2 a1 ᷜ乊 top 3-1
结论:后进先出( Last In first out),简称为 LIFO线性表。 举例1:家里吃饭的碗,通常在洗干净后一个一个 地落在一起存放,在使用时,若一个一个地拿,一定 最先拿走最上面的那只碗,而最后拿出最下面的那只 碗。 举例2:在建筑工地上,使用的砖块从底往上一层 层地码放,在使用时,将从最上面一层一层地拿 取 下面我们先给出栈结构的基本操作 1)初始化栈 Initstack(S) (2)入栈Push(S,item) (3)出栈Pop(stem) (4)获取栈顶元素内容 GetTop(s,item) 5)判断栈是否为空S9AE吧pySs
㒧䆎˖ৢ䖯ߎܜ˄Last In First Out˅ˈㅔ⿄Ў LIFO㒓ᗻ㸼DŽ В՟1˖ᆊ䞠ৗ佁ⱘˈ䗮ᐌ⋫ᑆޔৢϔϾϔϾ ഄ㨑ϔ䍋ᄬᬒˈՓ⫼ᯊˈ㢹ϔϾϔϾഄᣓˈϔᅮ ᳔ܜᣓ䍄᳔Ϟ䴶ⱘ䙷াˈ㗠᳔ৢᣓߎ᳔ϟ䴶ⱘ䙷া DŽ В՟2˖ᓎㄥᎹഄϞˈՓ⫼ⱘⷪഫҢᑩᕔϞϔሖ ϔሖഄⷕᬒˈՓ⫼ᯊˈᇚҢ᳔Ϟ䴶ϔሖϔሖഄᣓ পDŽ ϟ䴶៥Ӏܜ㒭ߎᷜ㒧ᵘⱘᴀ᪡˖ ˄1˅߱ྟ࣪ ᷜInitStack(S) ˄2˅ܹᷜ Push(S,item) ˄3˅ߎ ᷜPop(S,item) ˄4˅㦋পᷜ乊ܗ㋴ݙᆍ GetTop(S,item) ˄5˅߸ᮁᷜᰃ৺Ўぎ StackEmpty(S)