数据结构-链栈操作实践

数据结构-链栈操作实践

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

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

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

全部评论

相关推荐

01-18 09:26
已编辑
门头沟学院 Java
王桑的大offer:建议中间件那块写熟悉即可,写掌握 面试包被拷打到昏厥
点赞 评论 收藏
分享
01-14 19:01
吉首大学 Java
黑皮白袜臭脚体育生:加个项目吧,一般需要两个项目一业务一轮子呢,简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务