⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sstack.h

📁 一些基本的数据结构
💻 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 + -