顺序栈结构及操作

#include <stdio.h>
#include <stdlib.h>


#define STACK_INIT_SIZE 100
#define STACK_CREMENT 10
typedef struct  //定义顺序栈结构
{
 int *top,*base;
 int stacksize;
}sqstack;

sqstack_init(sqstack &q)
{
 q.base=(int *)malloc(sizeof(int)*STACK_INIT_SIZE);
 if(!q.base) exit(1);
 q.top=q.base; //栈空
 q.stacksize=STACK_INIT_SIZE;
}

sqstack_push(sqstack &q,int e)
{
 if(q.top>=q.base+q.stacksize)//增加空间
 {
  q.base=(int *)realloc(q.base,(q.stacksize+STACK_CREMENT)*sizeof(int));
  if(!q.base) exit(1);
  q.top=q.base+q.stacksize;
  q.stacksize+=STACK_CREMENT;
  
 }
 
 *q.top=e; //入栈关键语句。
 q.top++;
}

int sqstack_pop(sqstack &q,int &e)
{
 if(q.top==q.base) return 1;

 q.top--;
 e=*q.top;

 return (e);

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值