目录
堆栈与队列算法-以链表来实现堆栈
C++代码
堆栈与队列算法-以链表来实现堆栈
虽然以数组结构来制作堆栈的好处是制作与设计的算法都相当简单,但若堆栈本身是变动的话,则数组大小无法事先规划声明。这时往往必须考虑使用最大可能性的数组空间,这样会造成内存空间的浪费。而用链表来制作堆栈的优点是随时可以动态改变链表的长度,不过缺点是设计时算法较为复杂。
C++代码
#include<iostream>
using namespace std;class Node {
public:int data;Node* Next;
};class Stack {
private:Node* top;
public:Stack() {top = nullptr;}bool IsEmpty() {if (top == nullptr)return true;elsereturn false;}void Push(int tempData) {Node* newNode = new Node;newNode->data = tempData;newNode->Next = top;top = newNode;}void Pop() {Node* ptr;if (top != nullptr) {ptr = top;top = top->Next;ptr = nullptr;delete ptr;}}Node* GetTop() {if (top != nullptr) {return top;}}
};int main() {Stack* stack = new Stack();int value;cout << "请输入10个数据:" << endl;for (int i = 0; i < 10; i++) {cin >> value;stack->Push(value);}cout << "================" << endl;while (!stack->IsEmpty()) {cout << "从堆栈中弹出数据:" << stack->GetTop()->data << endl;stack->Pop();}cout << "================" << endl;delete stack;return 0;
}
输出结果