📄 sstack.h
字号:
//2008.2.6//
/*-----------------栈的顺序存储结构-------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <process.h>
/*-------------------函数结果状态代码--------------*/
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW 0
typedef int Status;
typedef int Element;
/*-------------------栈的顺序存储表示--------------*/
#define Stack_init_size 100
#define STACKINCREMENT 10
typedef struct
{
Element *base;
Element *top;
int Stacksize;
}SqStack;
/*-----------------栈的基本操作------------------*/
/*------------------建立一个空栈-----------------*/
Status InitSqStack (SqStack *S )
{ printf("jianzhan\n");
(S)->base = ( Element* )malloc( Stack_init_size * sizeof(Element));
if( !(S)->base ) exit( OVERFLOW );
(S)->top=(S)->base;
(S)->Stacksize = Stack_init_size;
return OK;
}
/*------------销毁栈-------------------*/
Status Destroy_SqStack(SqStack *S )
{
free( (S)->base );
(S)->base = NULL;
(S)->Stacksize = 0;
return OK;
}
/*-------------清空栈-----------------*/
Status Clear_SqStack(SqStack *S )
{
S->top=S->base;
return OK;
}
/*-----------------判断栈空-------------=*/
Status Empty_SqStack(SqStack *S )
{
if((S)->top==(S)->base)
return TRUE;
else
return FALSE;
}
/*----------------栈的长度-----------------*/
int SqStack_Length(SqStack *S )
{
int i;
i=(S)->top-(S)->base;
return i;
}
/*-----------返回栈顶元素----------------*/
Status Top( SqStack *S, Element *e )
{
if( (S)->top==(S)->base) exit( ERROR );
*e = *((S)->top -1 );
return OK;
}
/*------------插入元素------------------*/
Status push( SqStack *S, Element e )
{
if(S->top-S->base>=S->Stacksize)
{
S->base=(Element* )realloc( S->base,(S->Stacksize+STACKINCREMENT )* sizeof( Element ) );
if(!S->base) exit(OVERFLOW);
S->top=S->base+S->Stacksize;
S->Stacksize+=STACKINCREMENT;
}
*((S)->top)=e;
(S)->top=(S)->top+1;
return OK;
}
/*--------------删除栈顶元素--------------*/
Status pop( SqStack *S, Element *e )
{
if((S)->top==(S)->base)
return ERROR;
else {
(S)->top--;
*e=*(S->top);
return OK;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -