栈的相关操作


特点
有一端是固定 - 栈底
只能从栈顶的位置进行存/取数据
先进的后出(FILO)

顺序栈 - 顺序存储 - 数组
定义  结构体
#define MAX_SIZE 100
typedef int data_t;
typedef struct stack{
	data_t data[MAX_SIZE];  //存储数据
	int top;  //保存栈顶的位置
}stack_t;

5.2.2	创建一个空栈
//创建一个空栈
	定义一个stack_t类型的变量,在堆上分配空间
	给栈初始化,初始化栈顶的位置


//创建一个空栈
stack_t *create_stack(void){
	//定义一个stack_t类型的变量,在堆上分配空间
	stack_t *s = (stack_t *)malloc(sizeof(stack_t));
	if(s == NULL){
		printf("create_stack malloc is faield\n");
		return NULL;
	}
	//给栈初始化,初始化栈顶的位置
	s->top = 0;
	return s;
}

入栈
	判满 top == MAX_SIZE
	将数据放到top所指向的位置
	top+1

//入栈
int push_stack(stack_t *s, data_t x){
	//判满 top == MAX_SIZE
	if(s->top == MAX_SIZE){
		printf("stack is full\n");
		return -1;
	}
	//将数据放到top所指向的位置
	s->data[s->top] = x;
	//top+1
	s->top++;
	return 0;
}

出栈
	判空 top == 0
	top-1
	取出top所指向的位置上的数据

//出栈
int pop_stack(stack_t *s, data_t *x)
{
	//判空 top == 0
	if(s->top == 0){
		printf("stack is empty\n");
		return -1;
	}
	//top-1
	s->top--;
	//取出top所指向的位置上的数据
	*x = s->data[s->top];
	return 0;
}

遍历栈中所有的元素
void print_stack(stack_t *s)
{
	int i;
	
	for(i=0; i<=s->top-1; i++){
		printf("%d ", s->data[i]);
	}
	printf("\n");
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值