?? stack.h
字號:
//stack.h的代碼//頭文件部分
//函數結果狀態代碼
#include"stdio.h"
#include "stdlib.h"
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define NULL 0
typedef int Status;//函數的類型,其值是函數結果狀態代碼
typedef BiTree SElemType;//????
#define STACK_INIT_SIZE 100//存儲空間的初始化分配量
#define STACKINCREMENT 10//存儲空間的分配增量
typedef struct{
SElemType *base;//在棧構造和銷毀之后,base的值未NULL
SElemType *top;//棧頂指針
int stacksize;//當前分配的存儲分量,一元素為 單位
}SqStack;
Status InitStack(SqStack &S){
//構造一個空棧T
S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}//InitStack
Status GetTop(SqStack S,SElemType &e){
//若棧不空則用e返回棧定元素,并返回ok,否則返回error
if(S.top==S.base)return ERROR;
e=*(S.top-1);
return OK;
}//GetTop
Status Push(SqStack &S,SElemType e){
//插入元素e為新的棧頂元素
if (S.top-S.base>=S.stacksize) {//棧滿
S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}//Push
Status Pop(SqStack &S,SElemType &e){
//若棧不空,則刪除S的棧頂元素,用e返回其真值,并返回ok,否則返回error
if(S.top==S.base)return ERROR;
e=*--S.top;
return OK;
}//Pop
int StackEmpty(SqStack S)
//判斷棧S是否為空,若為空,則返回1,否則返回0
{
if(S.top==S.base) return 1;
else return 0;
}
int StackLength(SqStack S)
//求棧的元素個數
{
return S.top-S.base;
}
Status ClearStack(SqStack &S)
//清空棧中的元素
{
S.top=S.base;
return OK;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -