?? stack.h
字號:
#include "common.h"
#define STACK_INIT_SIZE 100//定義棧的初始長度
#define STACKINCREMENT 10 //定義棧每次追加分配的長度
//實現棧的數據類型
typedef struct{
SElemType *elem;
int top;
int stacksize;
}Stack;
//棧的各項操作的實現
status InitStack(Stack &s){
//初始化棧
s.elem=new SElemType[STACK_INIT_SIZE];
if (!s.elem) return OVERFLOW;
s.top=-1;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
status DestroyStack(Stack &s){
//銷毀棧
delete s.elem;
s.top=-1;s.stacksize=0;
return OK;
}
status ClearStack(Stack &s){
//當棧存在時將棧清空
//當棧不存在時返回出錯信息
if (!s.elem) return ERROR;
s.top=-1;
return OK;
}
status StackEmpty(Stack &s){
//判斷棧空與否,空時返回TRUE,否則返回ERROR.
//當棧不存在時返回出錯信息
if (!s.elem) return ERROR;
if (s.top<0) return TRUE;
return FALSE;
}
int StackLength(Stack s){
//返回棧的長度
//當棧不存在時返回出錯信息
if (!s.elem) return ERROR;
return s.top+1;
}
status GetTop(Stack s,SElemType &e){
//當棧存在且不空時返回棧頂元素
//當棧不存在或棧空時返回出錯信息
if (!s.elem) return ERROR;
if (s.top<0) return ERROR;
e=s.elem[s.top];
return OK;
}
status Push(Stack &s,SElemType e){
//當棧存在時壓棧
//當棧不存在時返回出錯信息
if (!s.elem) return ERROR;
if ((s.top+1)==s.stacksize){ //當棧的初始空間已滿
SElemType *temp=s.elem; int i; //為棧重新分配存儲空間
s.stacksize+=STACKINCREMENT;
s.elem=new SElemType[s.stacksize];
if (!s.elem) return OVERFLOW; //當分配失敗時返回出錯信息
for(i=0;i<=s.top;i++) s.elem[i]=temp[i];
delete temp;
}// if
s.top+=1;
s.elem[s.top]=e;
return OK;
}
status Pop(Stack &s,SElemType &e){
//當棧存在且不空時退棧
//當棧不存在或棧空時返回出錯信息
if(!s.elem) return ERROR;
if(s.top<0) return ERROR;
e=s.elem[s.top];
s.top-=1;
return OK;
}
status StackTraverse(Stack s,int (*visit)(SElemType &e)){
//當棧存在且不空時調用visit函數對棧作由底到頭的遍歷
//當visit函數調用失敗返回錯誤信息
//當棧不存在或棧空時返回出錯信息
int i;
if (!s.elem) return ERROR;
if (s.top<0) return ERROR;
for(i=0;i<=s.top;i++) visit(s.elem[i]);
return OK;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -