数据结构——栈的讲解(超详细)

数据结构------栈的讲解(超详细)-腾讯云开发者社区-腾讯云

复制代码
#include"Stack.h"
void STInit(ST* ps)
{
	ps->arr = NULL;
	ps->capacity = ps->top = 0;  //总空间个数和有用空间个数都初始化为0
}



void STDestroy(ST* ps)
{
	if (ps -> arr)   //先判断是否进行动态内存开辟了
	{
		free(ps -> arr);
	}
	ps->capacity = ps->top = 0;
}



void STPush(ST* ps, STDataType x)   //类似顺序表的尾插
{
	if (ps->capacity == ps->top)
	{
		int newcaopacity = ps->capacity == 0 ? 4 : 2 * ps -> capacity;
		STDataType* arr1 = (STDataType*)realloc(ps->arr, newcaopacity * sizeof(STDataType));
		assert(arr1);
		ps->arr = arr1;
		ps->capacity = newcaopacity;
	}  //扩容完成
	ps->arr[ps->top++] = x;
}


bool panduan(ST * ps)
{
	assert(ps);
	return ps -> top == 0;   //这个是来判断栈是不是空了
}


void STPop(ST* ps)
{
	assert(ps);
	assert(!panduan(ps));
	ps->top--;
}



STDataType STTop(ST* ps)
{
	return ps->arr[ps->top - 1];
}


int STSize(ST* ps)
{
	return ps->top;
}
相关推荐
爱编程的化学家6 小时前
代码随想录算法训练营第六天 - 哈希表2 || 454.四数相加II / 383.赎金信 / 15.三数之和 / 18.四数之和
数据结构·c++·算法·leetcode·双指针·哈希
papership11 小时前
【入门级-算法-6、排序算法: 插入排序】
数据结构·算法·排序算法
得意霄尽欢11 小时前
Redis之底层数据结构
数据结构·数据库·redis
I'm a winner12 小时前
第五章:Python 数据结构:列表、元组与字典(二)
数据结构·python
我是是是是是西红柿12 小时前
游戏中的展销系统使用的数据结构
数据结构·游戏
爱吃烤鸡翅的酸菜鱼12 小时前
【Redis】常用数据结构之Hash篇:从常用命令到使用场景详解
数据结构·数据库·redis·后端·缓存·哈希算法
二进制person13 小时前
数据结构--Map和Set
数据结构
我叫汪枫13 小时前
C语言深度入门系列:第十一篇 - 动态内存管理与数据结构:程序世界的高效算法大师
c语言·数据结构·算法
啊?啊?13 小时前
7 排序算法通关指南:从 O (n²)(选择 / 冒泡)到 O (nlogn)(快排 / 归并)+ 计数排序
数据结构·算法·排序算法
爱吃烤鸡翅的酸菜鱼14 小时前
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
数据结构·redis·后端·缓存·list