您如何使用内置堆栈的堆栈W / OUT实现堆栈

erm87

新成员
加入
2018年3月14日
消息
2
编程经验
Beginner
你好呀!

我是目前在计算机科学文凭课程中的初学者。

我们的一个练习是使用堆栈进行简单的控制台程序。

指令注意:

使用自己的数组实现创建堆栈。不要使用内置堆栈。也没有利用内置阵列类。

而且我并不完全不确定未使用内置堆栈和数组的意思。

我会感谢您的意见和投入。

谢谢,祝你有个美好的一天!
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,732
地点
悉尼,澳大利亚
编程经验
10+
堆栈是一个LIFO数据结构,即进入的最后一个数据是第一个出来的数据。与队列相比,这是FIFO,即进入的第一个数据是第一个出来的数据。堆栈的标准操作是按(添加数据)和POP(删除数据)。您需要使用Push和Pop方法定义一个类,其中Push将接受数据项并将其添加到堆栈顶部,弹出将删除堆栈顶部的项目并返回它。在内部,您将在数组中存储数据。如何管理该阵列是练习的重点。想到的两个主要选择是:

1.每次将项目按到堆栈上时,创建一个新的数组,该数组是一个大于现有数组的元素,并复制所有现有元素,然后将新项分配给最后一个元素。每次从堆栈中弹出一个项目,请执行逆。
2.将基本上为1但是每次都要调整大小,使用最初大于您需要的数组并将最后一个元素的索引存储在变量中,然后在您的情况下向数组添加多个元素调整大小。随着项目的弹出,您并不一定需要调整大小。

.NET Framework中的集合类使用第二个选项。例如,列表<T>Class默认维护(我相信)四个元素的内部数组。每次添加一个超过阵列大小的项目时,该大小都会增加一倍。内部数组永远不会隐含地调整大小,但该类具有明确执行它的方法。我想象堆栈<T>以相同的方式工作。

另请注意,可以使用array.resize方法更简单地完成阵列调整大小,但粗体文本表示您无法使用该方法。
 
最佳 底部