栈是一种数据结构,在计算机科学中被广泛使用。今天刚刚上了数据结构课,晚上就顺便写了一个比较简单的栈。

栈的特性在百度百科还有维基百科都有提到。其它菊苣的博客里面也有详细阐述,就不再赘述了。

直接把我写的栈贴出来。希望大家能够一起进步!

#include <iostream>
using namespace std;
typedef int Element;
typedef struct Stack {
	Element data;
	Stack *next;
}node;
node *initStack() {
	node *top = new node;
	if (top == NULL) {
		cout << "分配内存失败!请检查程序!" << endl;
		exit(-1);
	}
	top -> data = -1;
	top -> next = NULL;
	cout << "创建栈成功!" << endl;
	return top;
}
bool isEmpty(node *top) {
	if (top -> next == NULL) {
		return true;
	} else {
		return false;
	}
}
void pushStack(node *top, Element e) {
	node *p = new node;
	if (p == NULL) {
		cout << "分配内存失败!请检查程序!" << endl;
		exit(-1);
	}
	p -> data = e;
	p -> next = top -> next;
	top -> next = p;
}
void popStack(node *top) {
	if (isEmpty(top)) {
		cout << "该栈为空!" << endl;
		return;
	}
	node *p = top -> next;
	top -> next = p -> next;
	delete p;
}
void clearStack(node *top) {
	if (isEmpty(top)) {
		cout << "该栈为空!" << endl;
		return;
	}
	node *p;
	while (top -> next)	{
		p = top -> next;
		delete top;
		top = p;
	}
	delete top;
	cout << "该栈已经被清空!" << endl;
}
Element topStack(node *top) {
	return top -> next -> data;
}
int main()
{
	int n;
	node *stack1 = initStack();
	cout << "请输入您想要插入栈的数据的个数: [10] ";
	cin >> n;
	for (int i = 1; i <= n; ++i) {
		Element data;
		cout << "请输入您想插入栈中的数据: ";
		cin >> data;
		pushStack(stack1, data);
	}
	cout << "*************************************************************" << endl;
	cout << "您输入的数据是: " << endl;
	for (int i = 1; i <= n; ++i) {
		cout << "第 " << i << " 个数是 " << topStack(stack1) << endl;
		popStack(stack1);
	}
	clearStack(stack1);
	return 0;
}
运行结果:



原文地址:https://www.cnblogs.com/wiklvrain/p/8179483.html