目录
堆栈与队列算法-以链表来实现堆栈
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;
else
return 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;
}
输出结果