91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2023-12-04
  • 語言: 其他
  • 標簽: 數據結構??

資源簡介

一、問題描述 在控制臺下實現一個對算術表達式求值的模擬程序。 二、基本要求 該演示程序具有如下基本功能: (1) 表達式輸入,以字符序列的形式從終端輸入一個語法正確的數值表達式(float型),且表達式中只含有+、-、*、/、( 、)6 種運算符,輸入格式如下: …… 例如表達式: 100+(15/3)*2 輸入格式為: 100+(15/3)*2 注意: 輸入的表達式中間不含空格。 (2) 表達式結果的輸出,輸出形式為: = 例如表達式: 100+(15/3)*2 輸出形式為: 100+(15/3)*2 = 110 注意: 此處的輸出結果為整個表達式的數值結果。 (3) 數據合法性檢驗 主要是針對原表達式中除數為 0 的情況。 三、界面效果 表達式求值模擬程序 功能菜單: ============== [1] 輸入表達式并求值 [0] 退出 ============== 請輸入你的選擇 (0~1):1 請輸入一個表達式 : 100+(15/3)*2 計算結果如下: 100+(15/3)*2 = 110 請輸入你的選擇 (0~1):0 四、測試數據 (1) 8 = (2) 1+2+3+4 = (3) 88-1*5 = (4) 1024/4*8 = (5) 1024/(4*8) = (6) (20+2)*(6/2) = (7) 3-3-3 = (8) 80/(9-9) = (9) (6+2*(3+6*(6+6)) = (10) (((6+6)*6+3)*2+6)*2 = 五、實現提示 (1) 設置運算符棧和操作數棧輔助分析算符優先關系; (2) 在讀入字符序列時,完成運算符和操作數的處理,以及相應運算; (3) 在識別處運算數的同時,要將其字符序列形式轉化成 float 型數據形式; (4) 輸入的字符序列中,操作數不一定是一位數,可能是多位數,如 16+32 ; (5) 使用 Lab3-1 實現的棧的 ADT 基本操作完成本次作業 ; (6) 在程序中會用到兩類棧:操作數棧和運算符棧,分別為 float 型數據和字符型數據, 思考在同一個程序中如何處理兩類不同的數據類型? (7) 算符之間的優先關系參考課本 P53 頁表 3.1 。

資源截圖

代碼片段和文件信息

/***
*DynaSeqStack.cpp?-?動態順序棧,即棧的動態順序存儲實現
*
*
*題目:表達式求值
*
*班級:A1?北極
*
*姓名:邱繼穎
*
*學號:2008010829
*
****/

#include?
#include?
#include?
#include?
#include?“DynaSeqStack.h“

const?int?STACK_INIT_SIZE?=?100; //?初始分配的長度
const?int?STACKINCREMENT??=?10; //?分配內存的增量

/*------------------------------------------------------------
操作目的: 初始化棧
初始條件: 無
操作結果: 構造一個空的棧
函數參數:
SqStack?*S 待初始化的棧
返回值:
bool 操作是否成功
------------------------------------------------------------*/
bool?InitStack(SqStack?*S)
{
assert(S?!=?NULL);
S->base?=?(ElemType*)malloc(sizeof(ElemType)?*?STACK_INIT_SIZE);

if(S->base?==?NULL) return?false;

S->top?=?S->base;
S->stacksize?=?STACK_INIT_SIZE;

return?true;
}

/*------------------------------------------------------------
操作目的: 銷毀棧
初始條件: 棧S已存在
操作結果: 銷毀棧S
函數參數:
SqStack?*S 待銷毀的棧
返回值:

------------------------------------------------------------*/
void?DestroyStack(SqStack?*S)
{
assert(S?!=?NULL);

free(S->base);
S->top?=?S->base?=?NULL;
}

/*------------------------------------------------------------
操作目的: 判斷棧是否為空
初始條件: 棧S已存在
操作結果: 若S為空棧,則返回true,否則返回false
函數參數:
SqStack?S 待判斷的棧
返回值:
bool 是否為空
------------------------------------------------------------*/
bool?StackEmpty(SqStack?S)
{
assert((S.base?!=?NULL)?&&?(S.top?!=?NULL));
return(S.base?==?S.top);
}

/*------------------------------------------------------------
操作目的: 得到棧的長度
初始條件: 棧S已存在
操作結果: 返回S中數據元素的個數
函數參數:
SqStack?S 棧S
返回值:
int 數據元素的個數
------------------------------------------------------------*/
int?StackLength(SqStack?S)
{
assert((S.base?!=?NULL)?&&?(S.top?!=?NULL));
return(S.top-S.base);
}

/*------------------------------------------------------------
操作目的: 得到棧頂元素
初始條件: 棧S已存在
操作結果: 用e返回棧頂元素
函數參數:
SqStack?S 棧S
ElemType?*e 棧頂元素的值
返回值:
bool 操作是否成功
------------------------------------------------------------*/
bool?GetTop(SqStack?S?ElemType?*e)
{
assert((S.base?!=?NULL)?&&?(S.top?!=?NULL));
if(StackEmpty(S))
return?false;

*e?=?*(S.top-1);
return?true;
}

/*------------------------------------------------------------
操作目的: 遍歷棧
初始條件: 棧S已存在
操作結果: 依次對S的每個元素調用函數fp
函數參數:
SqStack?S 棧S
void?(*fp)() 訪問每個數據元素的函數指針
返回值:

------------------------------------------------------------*/
void?StackTraverse(SqStack?S?void?(*fp)(ElemType))
{
assert((S.base?!=?NULL)?&&?(S.top?!=?NULL));
for(;?S.basese++)
(*fp)(*S.base);
}

/*------------------------------------------------------------
操作目的: 壓棧——插入元素e為新的棧頂元素
初始條件: 棧S已存在
操作結果: 插入數據元素e作為新的棧頂
函數參數:
SqStack?*S 棧S
ElemType?e 待插入的數據元素
返回值:
bool 操作是否成功
------------------------------------------------------------*/
bool?Push(SqStack?*S?ElemType?e)
{
if(S?==?NULL) return?false;
assert((S->base?!=?NULL)?&&?(S->top?!=?NULL));

//?validate?overflow
if(StackLength(*S)?==?S->stacksize)
{
El

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????4331??2009-10-29?12:00??表達式求值\DynaSeqStack.cpp

?????文件????????881??2009-10-27?08:49??表達式求值\DynaSeqStack.h

?????文件????????147??2009-10-29?23:17??表達式求值\ElemType.cpp

?????文件????????267??2009-10-29?19:49??表達式求值\ElemType.h

?????文件???????3245??2009-10-30?10:49??表達式求值\Lab.cpp

?????目錄??????????0??2009-10-30?11:08??表達式求值

-----------?---------??----------?-----??----

?????????????????8871????????????????????6


評論

共有 條評論