-
大小: 3KB文件類型: .rar金幣: 2下載: 1 次發(fā)布日期: 2021-06-19
- 語言: C/C++
- 標(biāo)簽: 數(shù)據(jù)結(jié)構(gòu)??完整代碼??
資源簡介
中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式,并求值,(C語言

代碼片段和文件信息
/***
*DynaSeqStack.cpp?-?動(dòng)態(tài)順序棧,即棧的動(dòng)態(tài)順序存儲(chǔ)實(shí)現(xiàn)
*
*
*題目:實(shí)驗(yàn)3-1?棧的動(dòng)態(tài)順序存儲(chǔ)實(shí)現(xiàn)
*
*班級(jí):
*
*姓名:
*
*學(xué)號(hào):
*
****/
#include?
#include?
#include?
#include?
#include?“DynaSeqStack.h“
const?int?STACK_INIT_SIZE?=?100; //?初始分配的長度
const?int?STACKINCREMENT??=?10; //?分配內(nèi)存的增量
/*------------------------------------------------------------
操作目的: 初始化棧
初始條件: 無
操作結(jié)果: 構(gòu)造一個(gè)空的棧
函數(shù)參數(shù):
SqStack?*S 待初始化的棧
返回值:
bool 操作是否成功
------------------------------------------------------------*/
bool?InitStack(SqStack?*s)
{
if?(!(s->base?=?(ElemType?*)malloc(STACK_INIT_SIZE*sizeof(ElemType))))
return?false;
s->top?=?s->base;
s->stacksize?=?STACK_INIT_SIZE;
return?true;
}
/*------------------------------------------------------------
操作目的: 清空棧
初始條件: 棧S已存在
操作結(jié)果: 清空棧S
函數(shù)參數(shù):
SqStack?*S 待清空的棧
返回值:
操作是否成功
------------------------------------------------------------*/
bool?ClearStack(SqStack?*S)
{
if?(!S->base)??return??false;
S->top?=?S->base;
return?true;
}
/*------------------------------------------------------------
操作目的: 銷毀棧
初始條件: 棧S已存在
操作結(jié)果: 銷毀棧S
函數(shù)參數(shù):
SqStack?*S 待銷毀的棧
返回值:
無
------------------------------------------------------------*/
void?DestroyStack(SqStack?*s)
{
if?(s->base)
{
free(s->base);
s->base?=?NULL;
}
}
/*------------------------------------------------------------
操作目的: 判斷棧是否為空
初始條件: 棧S已存在
操作結(jié)果: 若S為空棧,則返回true,否則返回false
函數(shù)參數(shù):
SqStack?S 待判斷的棧
返回值:
bool 是否為空
------------------------------------------------------------*/
bool?StackEmpty(SqStack?s)
{
return?s.base?==?s.top;
}
/*------------------------------------------------------------
操作目的: 得到棧的長度
初始條件: 棧S已存在
操作結(jié)果: 返回S中數(shù)據(jù)元素的個(gè)數(shù)
函數(shù)參數(shù):
SqStack?S 棧S
返回值:
int 數(shù)據(jù)元素的個(gè)數(shù)
------------------------------------------------------------*/
int?StackLength(SqStack?S)
{
return?S.top-S.base;
}
/*------------------------------------------------------------
操作目的: 得到棧頂元素
初始條件: 棧S已存在
操作結(jié)果: 用e返回棧頂元素
函數(shù)參數(shù):
SqStack?S 棧S
ElemType?*e 棧頂元素的值
返回值:
bool 操作是否成功
------------------------------------------------------------*/
bool?GetTop(SqStack?s?ElemType?*e)
{
if?(!s.base)??return?false;
*e?=?*(s.top-1);
return?true;
}
/*------------------------------------------------------------
操作目的: 遍歷棧
初始條件: 棧S已存在
操作結(jié)果: 依次對(duì)S的每個(gè)元素調(diào)用函數(shù)fp
函數(shù)參數(shù):
SqStack?S 棧S
void?(*fp)() 訪問每個(gè)數(shù)據(jù)元素的函數(shù)指針
返回值:
無
------------------------------------------------------------*/
void?StackTraverse(SqStack?S?void?(*fp)(ElemType))
{
if?(S.base)
{
while?(S.top?!=?S.base)
{
printf(“%d\t“*(--S.top));
}
printf(“\n“);
}
}
/*------------------------------------------------------------
操作目的: 壓棧——插入元素e為新的棧頂元素
初始條件: 棧S已存在
操作結(jié)果: 插入數(shù)據(jù)元素e作為新的棧頂
函數(shù)參數(shù):
SqStack?*S 棧S
ElemType?e 待插入的數(shù)據(jù)元素
返回值:
bool 操作是否成功
------------------------------------------------------------*/
bool?Push(SqStack?*S?ElemType?e)
{
if?(!S->base)??return?false
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????3073??2009-10-29?16:55??Test.cpp
?????文件???????4223??2009-08-17?10:05??DynaSeqStack.cpp
?????文件????????884??2009-08-17?10:05??DynaSeqStack.h
?????文件????????222??2009-08-27?12:32??ElemType.cpp
?????文件????????230??2009-08-27?08:20??ElemType.h
-----------?---------??----------?-----??----
?????????????????8632????????????????????5
評(píng)論
共有 條評(píng)論