-->
当前位置:首页 > 题库 > 正文内容

主观题:3. 动态数组模拟堆栈操作

Luz3年前 (2022-09-10)题库306

![1662769738509.png](~/0e504383-2496-4923-a608-7cae0490edf0.png)
用一个动态数组模拟堆栈操作,如上图所示。初始时堆栈为空,将下标为 0 的元素看成栈底,一般栈底是固定的。对堆栈的常规操作有:①入栈,即向堆栈中压人数据(即将数据加入到数组中),加人数据时栈顶升高。②出栈,从栈顶取出一个数据。一个数据出栈后,栈顶降低。
上图中 size 表示堆栈的大小,n 表示当前栈中已有的元素个数。在进行入栈操作时,要考虑若堆栈已满,需要动态申请另一个新的栈空间( 一次比原来多10 个元素 ),将原栈内容拷入新栈, 然后释放原栈空间。在进行出栈操作时,要考虑若栈中无元素,则给出警告信息。
定义一个类 Stack,实现堆栈及相关操作。 其中数据成员有:① “ int *Stack;”, 栈底指针。② “ int n;”,堆栈中已有元素的个数。③ “ int size;”,堆栈的大小。成员函数有:①构造函数, 参数为堆栈的初始大小,缺省值为 10。需动态申请栈空间。② “ void push(int x);”,将 x 人栈。③ “ int pop();”,栈顶元素出栈。④ “ int stacksize();”, 返回堆栈的大小。⑤ “ int stacknum();” ,返回堆栈中实际元素的个数。⑥析构函数,释放堆栈空间。在主函数中定义一个 Stack 类对象,测试类的所有成员函数。









答案:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。