1:依據順序棧儲存結構的定義如下:(利用以下的常用操作設計演算法並實現完成2、3題)
#define maxsize 100
typedef
char selemtype;
typedef
struct
sqstack;
//除錯並測試常用操作如下:
intinitstack
( sqstack &s )
intstackempty
( sqstack s )
intstacklength
( sqstack s )
intpush
( sqstack &s, selemtype e)
intpop
( sqstack &s, selemtype &e)
2:設單鏈表中存放n個字元,試設計乙個演算法,判斷該字串是否中心對稱。
3:利用棧來實現算術表示式求值的演算法。** 程式執行時,輸入合法的算術表示式(中間值及最終結果要在0~9之間,可以包括加減乘除和括號),便可輸出相應的計算結果。**
#ifndef _stack_h_
#define _stack_h_
#include
#include
#include
#define maxsize 100
#define ok 1
#define error 0
#define overflow -2
typedef
int status;
typedef
char selemtype;
using
namespace std;
typedef
struct
//棧結構體
sqstack;
typedef
struct lnode//單鏈表結構體
lnode,
*linklist;
//初始化棧
status initstack
(sqstack &s)
//判斷棧滿棧空
status stackempty
(sqstack s)
//求棧長
intstacklength
(sqstack s)
//入棧函式
status push
(sqstack &s,selemtype e)
else
return error;
}//出棧函式
status pop
(sqstack &s,selemtype &e)
//取棧頂元素
selemtype gettop
(sqstack s)
else
return error;
}//建立單鏈表
void
createlist_l
(linklist &l,
int n)
}//列印單鏈表
void
printlist_l
(linklist &l)
}//單鏈表刪除元素
status listdelete
(linklist &l,
int i)if(
!(p-
>next)
||(j>i-1)
)return error;
q=p-
>next;
p->next=q-
>next;
delete q;
return ok;
}//獲取單鏈表元素值
status getelem
(linklist l,
int i,selemtype &e)if(
!p || j>i)
return error;
e=p-
>data;
return ok;
}#endif
// _stack_h_
#include
"stack.h"
status teststack
(sqstack &s,selemtype &e)
;int
center
(linklist &l,sqstack &s)
;char evaluateexpression ();
selemtype precede
(selemtype t1,selemtype t2)
;status in
(selemtype c)
;selemtype operate
(selemtype a,selemtype theta,selemtype b)
;int
main()
//棧基礎測試函式
status teststack
(sqstack &s,selemtype &e)
//判斷是否中心對稱
intcenter
(linklist &l,sqstack &s)
else}if
(stacklength
(s))
return1;
return0;
//getelem(linklist l,int i,selemtype &e)
}char
evaluateexpression()
//ch不是運算子則進opnd棧
else
switch
(precede
(gettop
(optr)
, ch)
)//比較optr的棧頂元素和ch的優先順序
//switch
}//while
return
gettop
(opnd)
;//opnd棧頂元素即為表示式求值結果
}status in
(selemtype c)
// 應在前面有定義typedef char selemtype;
} selemtype precede
(selemtype t1,selemtype t2)
return f;
}selemtype operate
(selemtype a,selemtype theta,selemtype b)
return c;
}
第1題
當前棧的長度為:0
請輸入將要入棧的元素:
1當前棧的長度為:1
出棧:1
當前棧的長度為:0
第2題請輸入要判斷中心對稱的字串,長度為512
345該字串不是中心對稱的字串
第3題請輸入算術表示式,並以#結束.1+
3/3+
(2*3
)-2#6
process returned 0
(0x0
) execution time :
37.894 s
press any key to continue
.
第1題
當前棧的長度為:0
請輸入將要入棧的元素:
1當前棧的長度為:1
出棧:1
當前棧的長度為:0
第2題請輸入要判斷中心對稱的字串,長度為512
321該字串是中心對稱的字串
第3題請輸入算術表示式,並以#結束.1+
3*2-
3/3#6
process returned 0
(0x0
) execution time :
28.153 s
press any key to continue
.
實驗三 棧和佇列實驗
資料結構 實驗三 棧和佇列實驗 一 實驗目的 鞏固棧和佇列資料結構,學會運用棧和佇列。1.回顧棧和佇列的邏輯結構和受限操作特點,棧和佇列的物理儲存結構和常見操作。2.學習運用棧和佇列的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗時間 準備時間為第5周到第6周,...
實驗三 棧和佇列
實驗內容1.自己選擇順序或鏈式儲存結構,定義乙個空棧類,並定義入棧 出棧 取棧元素基本操作。然後在主程式中對給定的n個資料進行驗證,輸出各個操作結果。2.自己選擇順序或鏈式儲存結構,定義乙個空棧佇列,並定義入棧 出棧 取棧元素基本操作。然後在主程式中對給定的n個資料進行驗證,輸出各個操作結果。1 棧...
實驗三 棧和佇列
資料結構 實驗三 棧和佇列實驗 一 實驗目的 鞏固棧和佇列資料結構,學會運用棧和佇列。1.回顧棧和佇列的邏輯結構和受限操作特點,棧和佇列的物理儲存結構和常見操作。2.學習運用棧和佇列的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗時間 準備時間為第 5周到第 6...