数据结构中的栈(c)

栈中的初始化和进栈操作

c 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MaxSize 10 //栈中元素的最大个数
typedef struct {
	int data[MaxSize]; //静态数组存放栈中元素
	int top;		   //栈顶指针
}SqStack; //Sequence - 顺序

//初始化栈
void InitStack(SqStack& S) {
	S.top = -1; //初始化栈顶指针
}

//判断栈空
bool StackEmpty(SqStack S) {
	if (S.top == -1) 
	{
		printf("Now the Stack is empty!\n");
		return true;
	}
	else
	{
		return false;
	}
}

//进栈操作
bool Push(SqStack& S, int x) {
	if (S.top == MaxSize - 1)
		return false;
	S.top += 1;		  //等价于
	S.data[S.top] = x;//S.data[++S.top] = x;
	return true;
}

//出栈操作
bool Pop(SqStack& S, int &x) {
	if (S.top == -1)
		return false;
	x = S.data[S.top--];
	return true;
}

void testStack() {
	SqStack S;//声明一个顺序栈(分配空间)
	InitStack(S);
	StackEmpty(S);
	Push(S, 3);
	printf("SqStack: %d\n", S.data[0]);
	Push(S, 5);
	printf("SqStack: %d %d\n", S.data[0], S.data[1]);
	Push(S, 7);
	printf("SqStack: ");
	for (int i = 0; i <= S.top; ++i)
	{
		printf("%d ", S.data[i]);
	}

	printf("\n----------------");
}


int main() {
	testStack();
	
	return 0;
}
相关推荐
happyprince1 小时前
03-深刻观-CodeX哲学与升华(源码)
算法·ai编程
不会打球的王子1 小时前
Day 27:迁移学习与微调 — 站在巨人的肩膀上
算法
数模竞赛Paid answer2 小时前
2025年中青杯数学建模A题康养城市建设求解全过程论文及程序
算法·数学建模·数据分析·中青杯
网安蟹佬霸2 小时前
密码学安全实战:从加密原理到哈希破解的完整攻防指南
网络·算法·安全·web安全·开源·密码学·哈希算法
yangmu32032 小时前
深度解析:短视频是如何通过“算法+神经机制”劫持用户时间的?
算法
LuminousCPP2 小时前
栈和队列专题(四):LeetCode 232. 用栈实现队列|双栈分工 + 按需迁移 + 摊还 O(1)
c语言·数据结构·笔记·算法·leetcode
纪念 2292 小时前
二叉树排序讲解(一)
数据结构
tudousisi2223 小时前
01背包8.21
数据结构·算法
ZJU_统一阿萨姆3 小时前
【算子开发】Reduction算子完全指南
人工智能·算法·语言模型
鹿角片ljp11 小时前
LeetCode 46. 全排列|吃透回溯
算法·leetcode·职场和发展