實驗三 棧與佇列的應用

2021-10-04 02:09:06 字數 3951 閱讀 6727

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...