数据结构之顺序栈(StackOrder)与 链式栈(StackList)

顺序栈

功能被限制的表:
栈:把表结构限制为只有一个端口进出,元素先进后出FILO。 而栈内存正是使用了这种结构管理内存,所以才叫栈内存。

实现功能列表

// 创建栈
StackOrder* create_stack(int cal)
// 销毁栈
void destroy_stack(StackOrder* stack)
// 栈空
bool empty_stack(StackOrder* stack)
// 栈满
bool full_stack(StackOrder* stack)
// 入栈
bool push_stack(StackOrder* stack,TYPE val)
// 出栈
bool pop_stack(StackOrder* stack)
// 获取栈顶元素
TYPE top_stack(StackOrder* stack)
//判断是否是合法出入栈顺序
bool is_pop(int* in,int* out,size_t len)

代码

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define TYPE int

typedef struct StackOrder
{
   
	TYPE* ptr;	
	int cal;	//容量
	int top;	//栈顶
}StackOrder;

// 创建栈
StackOrder* create_stack(int cal)
{
   
	StackOrder* stack = malloc(sizeof(StackOrder));
	stack->ptr = malloc(sizeof(TYPE)*cal);
	stack->cal = cal;
	stack->top = -1;
	/*
		top = cal; 	 满减栈
		top = cal-1; 空减栈
		top = -1;  	 满增栈
		top = 0;     空增栈
	*/
	return stack;
}

// 销毁栈
void destroy_stack(StackOrder* stack)
{
   
	free(stack->ptr);		//先释放内部
	free(stack);				//在释放结构体
}

// 栈空
bool empty_stack(StackOrder* stack)
{
   
	return -1 == stack->top;			//初始位置在-1说明空
}

// 栈满
bool full_stack(StackOrder* stack)
{
   
	return stack->top >= stack->cal-1;	//栈顶 大于等于 栈容量-1 说明满了  栈顶初始在-1
}

// 入栈
bool push_stack<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值