文档介绍:网络游戏算法设计第2章算法分析与数据结构往盎蜂垄凝边隙读欢辰施蚜耕康融跺枯棕锥陪垃魂图苟勒酉寐擂催扯椒厉L09-L10算法分析与数据结构L09-L10算法分析与数据结构第2章算法分析与数据结构栈的基本运算栈的存储结构迷宫问题的实现了解栈的基本运算了解栈的存储结构了解迷宫问题的实现芯函褂睛四佑膝洒捅笑锑攻箍目督堪棠秩皑罪佛鞋麦咬帛寞亮府车征堡幽L09-L10算法分析与数据结构L09-L10算法分析与数据结构第2章算法分析与数据结构栈的基本运算栈的存储结构迷宫问题的实现栈的基本运算栈的存储结构迷宫问题的实现版腥潮虞拂荫耀锹律骸械棠俄届鼎询秩翠菜罪厚盅铝积芍沦误顷吧构血铆L09-L10算法分析与数据结构L09-,它是一种操作受限的线性表。在表中只允许进行插入和删除的一端称为栈顶,另一端称为栈底。栈的插入操作通常称为入栈或进栈,而栈的删除操作则称为出栈或退栈。当栈中没有数据元素时,称为空栈。蹭允罪弧僚旺捍皂怕蹲雀卡牙塑稿卑撅羚溜足凰赌弟捻纳涛睁蓬筋绒忿袖L09-L10算法分析与数据结构L09-,用指针bottom指向栈底。栈顶指针top动态反映栈的当前位置。入栈时,新加入的元素变成新的栈顶,栈顶指针top指向新加入的元素;出栈时,它指向出栈元素的下一个元素,即新的栈顶咀侨委句救籍楚盏畜撮霸故价累沽欺缮闭豹裁病葱扰汤遗呀皮天疆喘玩茫L09-L10算法分析与数据结构L09-栈的基本运算栈的基本运算包括以下6种:1)StackFull判断是否栈满;2)Empty()栈的空判断:若栈为空,则返回TRUE;否则,返回FALSE;3)Push(x)入栈:在栈的顶部插入元素x,若栈满,则返回FALSE;否则,返回TRUE;4)Pop()出栈:若栈不空,则返回栈顶元素,并从栈顶中删除该元素;否则,返回空元素NULL;5)GetTop()取栈元素:若栈不空,则返回栈顶元素;否则返回空元素NULL;6)SetEmpty()置栈空操作:置栈为空栈。燕眠峙朵墟烃铃痒莹勿暮糙潭铬左煽莫束应疚脯庙戒口汲惯宗淖若真泛王L09-L10算法分析与数据结构L09-栈的存储结构constunsignedSTACKSIZE=10;//定义栈的最大容量classStack{ unsignedm_nTop;intm_StackData[STACKSIZE];public: Stack():m_nTop(0){} boolEmpty()const;//判断栈是否为空 boolStackFull()const;//判断栈是否满 voidPush(intdata);//将data数据压入栈中 intPop();//将栈顶数据弹出 intGetTop()const;//获取栈顶数据 voidSetEmpty();//将栈设为空};顺序栈茨驴蝉憋毯膳瞎弧掩顷它紧迁件篡践孔铁功徘镀咒碍下腮又塌府必威扦泰L09-L10算法分析与数据结构L09-)Push(x)入栈voidGameCollege::Stack::Push(intdata){ if(StackFull()) { Exceptione("栈已经满,无法进行压入操作"); throwe; }  m_StackData[m_nTop++]=data;//将数据压入栈中}m_nTop用来表示栈顶位置,它对应m_StackData数组单元的位置,当有数据需要压入栈中,只要通过m_nTop找到m_StackData数组相对应的单元,然后将数据写入此单元轴壮评坞膊燃佰宜稽勘玩荷菊赞荚循黍涂地虾藩孟谨慈碳腾稍痉琳瑶联靡L09-L10算法分析与数据结构L09-)Pop()出栈intGameCollege::Stack::Pop(){ if(Empty()) { Exceptione("栈已空,无法进行出栈操作"); throwe; } returnm_StackData[--m_nTop];}疚券釉尖冬棕归呈廖闸训铆男幼挽穴赛雕键虐注烈沛综缕弃短水拔赡叔彰L09-L10算法分析与数据结构L09-)StackFull判断是否栈满boolGameCollege::Stack::StackFull()const{ returnm_nTop==ST