- 2
- 0
- 约 24页
- 2024-05-30 发布于广西
- 举报
学科竞赛编程教研研究院C++NOIPNOIIOI
1PARTONE栈定义插入数据:入栈(Push)删除数据:出栈(Pop)后入先出:LastInFirstOut(LIFO)应用表达式求值消除递归深度优先搜索栈(Stack)运算只在表的一端(栈顶,Top)进行(插入、删除等操作),属于线性表不含元素的空表为空栈按存储方式分为顺序栈和链式栈...an...a2a1表头(栈底)表尾(栈顶)
1PARTONE栈的抽象数据类型栈定义templateclassTclassStack{ public: voidclear(); boolpush(constTitem); boolpop(Titem); booltop(Titem);boolisEmpty(); boolisFull();};//栈的运算集//变为空栈//item入栈,成功返回真,否则假//返回栈顶内容并弹出,成功返回真,否则假//返回栈顶但不弹出,成功返回真,否则假//若栈已空返回真//若栈已满返回真
1PARTONE栈的存储顺序栈(Array-basedStack):利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。通常由一个一维数组和一个记录栈顶元素位置的变量组成链式栈(LinkedStack)即为栈的链式存储结构,实际上就是一个单链表。插入和删除操作只能在链栈的栈顶进行,即指针的方向是从栈顶向下链接例:按压入先后次序,最后压入的元素编号为4,然后依次为3,2,1
1PARTONE栈的存储时间效率所有操作都只需常数时间顺序栈和链式栈在时间效率上难分伯仲空间效率顺序栈须说明一个固定的长度链式栈的长度可变,但增加结构性开销顺序栈和链式栈的比较实际操作顺序栈读取内部元素的时间为O(1)链式栈读取元素需要沿着指针链游走,显然慢些,读取第k个元素需要时间O(k)顺序栈容易根据栈顶位置,进行相对位移,快速定位并读取栈的内部元素顺序栈比链式栈用得更广泛
1PARTONE栈的存储——顺序栈的top指针需要mSize-1个元素入栈,定义栈大小为mSize满栈top=mSize每弹出一个元素,top减1栈长度定义空栈top=0每插入一个元素,top加1下溢(Underflow)对空栈进行出栈运算时所产生的现象,即top=0时的现象上溢(Overflow)当栈中已经有mSize个元素时,如果再做进栈运算,所产生的现象进栈出栈
1PARTONEtemplateclassTclassarrStack:publicStackT{ private: intmSize; inttop; T*st; public: arrStack(intsize) { mSize=size;top=-1;st=newT[mSize]; } arrStack() { top=-1; } ~arrStack(){delete[]st;} voidclear(){top=-1;}};//栈的顺序存储//栈中最多可存放的元素个数//栈顶位置,应小于mSize//存放栈元素的数组//栈的运算的顺序实现//创建一个给定长度的顺序栈实例//创建一个顺序栈的实例//清空栈顺序栈的类定义
1PARTONE栈的基本操作进栈:栈不满的情况下才可以进行进栈操作清空栈:将top指向栈底,即top=0出栈:执行出栈操作时要保证栈中有元素,此时top--取栈顶元素:top所指向的元素即为栈顶元素初始化:top=0出栈:先判断是否空栈boolarrStackT::pop(Titem){if(top==-1){//栈为空cout“空栈不能执行出栈endl;returnfalse;}else{item=st[top--];//返回栈顶,并缩减1returntrue;}}211弹出元素2进栈:先判断是否满栈boolarrStackT::push(constTitem){if(top==mSize-1){//栈已满cout栈满溢出endl;returnfalse;}else{//新元素入栈并修改栈顶指针st[++top]=item;returntrue;}}
1PARTONE栈的基本操作初始化进栈进栈进栈出栈,弹出2例:进出栈练习如1,2,3,三个数先后进栈,从空栈开始依次进行进栈、进栈、
您可能关注的文档
- C++信息竞赛进级第4讲 搜索剪枝.pptx
- C++信息竞赛进级第5讲 子序列.pptx
- C++信息竞赛进级第6讲 资源分配.pptx
- C++信息竞赛进级第7讲 区间.pptx
- C++信息竞赛进级第8讲 组合数学 (1).pptx
- C++信息竞赛进级第9讲 二分答案.pptx
- C++信息竞赛进级第10讲 二项式系数.pptx
- C++信息竞赛进级第11讲 欧几里得原理.pptx
- C++信息竞赛进级第12讲 广搜.pptx
- C++信息竞赛进级第13讲 二次展开式.pptx
- 2026年安徽省宣城市单招职业倾向性考试题库附答案解析.docx
- 2026年安徽新闻出版职业技术学院单招职业技能测试模拟测试卷附答案解析.docx
- 2026年安徽工商职业学院单招职业技能测试模拟测试卷附答案解析.docx
- 2026年安徽林业职业技术学院单招职业技能测试模拟测试卷附答案解析.docx
- 2026年安徽工业经济职业技术学院单招职业适应性考试模拟测试卷附答案解析.docx
- 2026年安徽机电职业技术学院单招职业倾向性考试模拟测试卷附答案解析.docx
- 2026年安徽城市管理职业学院单招职业技能测试模拟测试卷附答案解析.docx
- 2026年城市配送车辆停靠点建设投资计划书.docx
- 2026年安徽国防科技职业学院单招职业倾向性测试题库附答案解析.docx
- 2026年安徽国际商务职业学院单招职业技能测试题库附答案解析.docx
原创力文档

文档评论(0)