顺序栈结构及操作

来源:互联网 发布:香港树仁大学 知乎 编辑:程序博客网 时间:2024/06/11 06:27

#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);

}
 

原创粉丝点击