堆栈与队列算法-以链表来实现堆栈

目录

堆栈与队列算法-以链表来实现堆栈

C++代码


堆栈与队列算法-以链表来实现堆栈

虽然以数组结构来制作堆栈的好处是制作与设计的算法都相当简单,但若堆栈本身是变动的话,则数组大小无法事先规划声明。这时往往必须考虑使用最大可能性的数组空间,这样会造成内存空间的浪费。而用链表来制作堆栈的优点是随时可以动态改变链表的长度,不过缺点是设计时算法较为复杂。

C++代码

#include
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;
}

输出结果

堆栈与队列算法-以链表来实现堆栈_第1张图片

你可能感兴趣的:(算法(Algorithm),c++,开发语言,算法,链表,堆栈)