数据结构-链栈操作实践

采用链式存储实现栈的初始化、入栈、出栈操作

#include<iostream>
using namespace std;
// 定义链栈的结构
typedef struct LinkNode {
   
	int data;
	struct LinkNode* next;
}LinkNode, *LinkStack;

/** * 初始化链栈 * @param LS 链栈LS */
void InitStack(LinkStack& LS) {
   
	LS = (LinkStack)malloc(sizeof(LinkNode));
	if (LS)
		LS->next = NULL;
}

/** * 链栈的入栈操作 * @param LS 链栈LS * @param x 入栈元素x */
void Push(LinkStack& LS, int x) {
   
	LinkNode* p = LS;
	p->data = x;  // 先入栈
	LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode));
	if (s) {
   
		s->next = p;  // 再加1
		LS = s;
	}
}

/** * 链栈的出栈操作 * @param LS 链栈LS * @param x 通过x返回出栈元素 */
void Pop(LinkStack& LS, int& x) {
   
	LinkNode* p = LS->next;
	LS->next = p->next;  // 先减1
	x = p->data;  // 再出栈
	free(p);
}

int main() {
   
	int n;
	cin >> n;

	LinkStack LS;
	InitStack(LS);
	
	int x;
	cout << "入栈:";
	for (int i = 0; i < n; i++)
	{
   
		cin >> x;
		Push(LS, x);
	}

	cout << "出栈:";
	for (int i = 0; i < n; i++)
	{
   
		Pop(LS, x);
		cout << x << " ";
	}
	cout << endl;

	return 0;
}

创作不易,喜欢的话加个关注点个赞,谢谢谢谢谢谢!