文档介绍:网络游戏算法设计第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