数据结构中的栈(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;
}
相关推荐
Dola_Zou4 小时前
工厂智能排产软件算法保护与按产线计费实战
算法·自动化·软件工程·软件加密
啦啦啦啦啦zzzz5 小时前
Logger的组装(c++20)
c++·算法·c++20
尾善爱看海6 小时前
前端算法与手写题集
前端·算法
程序员阿鹏7 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
AI 思录7 小时前
Prompt 事故档案(八):日常表达被标为“待校准”,AI 的爹味语法从哪里来
大数据·人工智能·算法·prompt·用户体验·ai合规
月光船幽幽7 小时前
跨范式映射的稳定接口设计
人工智能·python·算法
郝学胜-神的一滴8 小时前
C++11 工程级应用 09:告别无谓拷贝,解锁高性能移动语义
开发语言·数据结构·c++·vscode·软件工程·visual studio
2601_965742228 小时前
全媒体运营与短视频代运营,两者有什么区别?
大数据·数据结构·人工智能·算法·ai·媒体
wordbaby9 小时前
混合检索:两全其美的艺术
人工智能·算法
彧azz10 小时前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法