?? optrstack.h
字號:
//順序棧頭文件.h
//棧(stack): 限定僅在表的一端進行插入和刪除操作的線性表.
// 棧又稱為后進先出(Last In First Out)的線性表(簡稱LIFO結構)
//棧頂(top): 允許插入和刪除的一端稱為棧頂.
//棧底(base):不許插入和刪除的一端稱為棧底.
//棧的順序存儲表示
#define STACK_INIT_SIZE 100 //存儲空間初始分配量
#define STACKINCREMENT 10 //存儲空間分配增量
typedef struct
{OPTRElemType *base; //棧底指針,在棧構造之前和銷毀之后,base的值為NULL
OPTRElemType *top; //棧頂指針
int stacksize; //當前已分配的存儲空間,以元素為單位
}OPTRSqStack;
Status InitOPTRStack(OPTRSqStack &S)
{//構造一個空棧S
S.base=(OPTRElemType *)malloc(STACK_INIT_SIZE*sizeof(OPTRElemType));
if (!S.base) return ERROR;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status GetTop(OPTRSqStack S,OPTRElemType &e)
{//若棧S不空,則用e返回S的棧頂元素,并返回OK;否則返回ERROR
if (S.top==S.base) return ERROR;
e=*(S.top-1);
return OK;
}
OPTRElemType GetTop(OPTRSqStack S) //函數重載
{//若棧S不空,則返回S的棧頂元素,否則退回操作系統
if (S.top==S.base) exit(OVERFLOW);
return *(S.top-1);
}
Status Push(OPTRSqStack &S,OPTRElemType e)
{//插入元素e為新的棧頂元素
if (S.top-S.base>=S.stacksize)
{S.base=(OPTRElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(OPTRElemType));
if (!S.base) return ERROR;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
Status Pop(OPTRSqStack &S,OPTRElemType &e)
{//若棧S不空,則刪除S的棧頂元素,用e返回其值,并返回OK;否則返回ERROR
if (S.top==S.base) return ERROR;
e=*--(S.top);
return OK;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -