当前位置: 首页 > article >正文

数据结构-顺序栈

栈:是一种特殊的线性表,其只允许在表尾进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

压栈:栈的插入操作叫做进栈 / 压栈 / 入栈,入数据在栈顶。

出栈:栈的删除操作叫做出栈。出数据也在栈顶。

 

 顺序栈结构体定义

typedef struct
{
	int data[MAX_SIZE];//数组顺序栈
	int top;//栈顶指针
}seqstack_t;//顺序栈的结构体

顺序栈初始化

//顺序栈的初始化
seqstack_t* seqstack_init()
{
	seqstack_t* s = (seqstack_t*)malloc(sizeof(seqstack_t));//申请一块顺序栈大小的内存
	memset(s->data,0,sizeof(s->data));
	s->top = -1;//栈顶指针
	return s;
}

 判断栈是否已满

//判断栈是否已满
int stack_isfull(seqstack_t* s)
{
	return(s->top == MAX_SIZE - 1);//如果栈顶指针等于最大长度减一 那说明栈顶指针就到了最大的位置
}

判断栈是否已空

int stack_isempty(seqstack_t* s)
{
	return (s->top == -1);//当top等于-1时说明栈里面没有元素
}

入栈

//入栈
int stack_push(seqstack_t* s, int data)
{
	if (stack_isfull(s))
	{
		printf("栈已满\n");
		return -1;
	}
	s->top++;//栈顶指针加一
	s->data[s->top] = data;
	return 0;
}

出栈

//出栈
int stack_pop(seqstack_t* s)
{
	int value;
	if (stack_isempty(s))
	{
		printf("栈已空");
		return -1;
	}
	value = s->data[s->top];
	s->top--;
	return value;
}

测试

int main()
{
	seqstack_t* S = seqstack_init();
	printf("入栈");
	for (int i = 1; i < 5; i++)
	{
		printf("%d", i);
		stack_push(S,i);
	}
	printf("\n");
	printf("出栈");
	while (!stack_isempty(S))
	{
		int value = stack_pop(S);
		printf("%d", value);
	}
	return 0;
}

 

 

 

 


http://www.kler.cn/a/349862.html

相关文章:

  • uniapp使用uni.navigateBack返回页面时携带参数到上个页面
  • 【Elasticsearch】RestClient操作文档
  • window中80端口被占用问题
  • 共享内存 shm
  • 深度解析“Integrity”——从技术到品格的多重意义
  • CAN总线
  • 使用Illustrator软件打印,如何取消上面打印?
  • TCP/UDP通信协议
  • PHP-FPM和FastCGI
  • 用于混合集成的高功率InP单片集成宽带可调激光器和SOA阵列(一)
  • 2024版51单片机教程
  • leetcode 739.每日温度
  • GS-LRM: Large Reconstruction Model for 3D Gaussian Splatting 论文解读
  • 软考《信息系统运行管理员》- 5.2 信息系统数据资源例行管理
  • MySQL初识
  • SQL 自学:事务处理的COMMIT 和 ROLLBACK 语句的运用
  • PG 17 增量备份功能介绍
  • 等保测评实战:SQL Server数据库的安全评估
  • 弧度和角度
  • ARINC 429总线协议
  • Redis知识应用索引指南
  • 【LeetCode】动态规划—95. 不同的二叉搜索树 II(附完整Python/C++代码)
  • 数据特征工程:离散趋势指标分析
  • RAG(检索增强生成)面经(1)
  • 前端开发设计模式——命令模式
  • QT元对象系统特性详细介绍(信号槽、类型信息、动态设置属性)(注释)