一、源程式
棧與佇列基本操作:
#includeusingnamespace
std;
#define ok 1
#define overflow -1
#define error 0
#define maxsize 100
inttypedef status;
typedef
struct stacknode//
鏈棧的定義
stacknode,*linkstack;
status initstack(linkstack &s)//
鏈棧初始化
status push(linkstack &s, int e)//
入棧status pop(linkstack &s, int &e)//
鏈棧的出棧
status print(linkstack &s)//
鏈棧顯示
return
ok;}
int gettop(linkstack s)//
取棧頂元素
typedef
struct qnode//
鏈隊定義
qnode,*queueptr;
typedef
struct
linkqueue;
status initqueue(linkqueue &q)//
鏈隊初始化
status enqueue(linkqueue &q, int e)//
入隊status dequeue(linkqueue &q, int &e)//
出隊int gethead(linkqueue q)//
取隊頭元素
intmain()
pop(a1, n);
push(a2, n);
pop(a1, n);
int a1 =n;
pop(a1, n);
int a2 =n;
pop(a1, n);
push(a2, n);
cout
<< "
出棧元素:
"<< a1 << "
"<< a2
<< "
現在在棧中的元素為:
"
cout
initqueue(b1);
initqueue(b2);
cout
<< "
請輸入四個元素入隊
"
cout
<< "
鏈隊出對:
"
}
運算子表示式:
#include#include#include
#include
using
namespace
std;
#define ok 1
#define overflow -1
#define error 0
#define maxsize 100
int n = 0
;int
typedef status;
typedef
struct
//順序棧的定義
sqstack;
status initstack(sqstack &s)//
順序棧初始化
status push(sqstack &s, char e)//
入棧
*s.top++ =e;
return
ok;}
status pop(sqstack &s, char &e)//
出棧char
gettop(sqstack s)
}void in(char
c)
else cout <"
不是運算子
"<}char preccede(char t1, char
t2)
if (t2 == '
(' || t2 == '
)' || t2 == '
[' || t2 == ']'
)
if (t1 == '
!' || t1 == '
~' || t1 == '
++' || t1 == '
--')a1 = 13
;
if (t2 == '
!' || t2 == '
+' || t2 == '
-' || t2 == '
~' || t2 == '
++' || t2 == '
--')b1 = 13
;
if (t1 == '
*' || t1 == '
/' || t1 == '
%')a1 = 12
;
if (t2 == '
*' || t2 == '
/' || t2 == '
%')b1 = 12
;
if (t1 == '
+' || t1 == '
-')a1 = 11
;
if (t2 == '
+' || t2 == '
-')b1 = 11
;
if (t1 == '
<<
' || t1 == '
>>
' || t1 == '
>>>
')a1 = 10
;
if (t2 == '
<<
' || t2 == '
>>
' || t2 == '
>>>
')b1 = 10
;
if (t1 == '
<
' || t1 == '
<=
' || t1 == '
>
' || t1 == '
>=
')a1 = 9
;
if (t2 == '
<
' || t2 == '
<=
' || t2 == '
>
' || t2 == '
>=
')b1 = 9
;
if (t1 == '
==' || t1 == '
!=')a1 = 8
;
if (t2 == '
==' || t2 == '
!=')b1 = 8
;
if (t1 == '
&')a1 = 7
;
if (t2 == '
&')b1 = 7
;
if (t1 == '
^')a1 = 6
;
if (t2 == '
^')b1 = 6
;
if (t1 == '
|')a1 = 5
;
if (t2 == '
|')b1 = 5
;
if (t1 == '
&&')a1 = 4
;
if (t2 == '
&&')b1 = 4
;
if (t1 == '
||')a1 = 3
;
if (t2 == '
||')b1 = 3
;
if (t1 == '
?:')a1 = 2
;
if (t2 == '
?:')b1 = 2
;
if (t1 == '
=' || t1 == '
+=' || t1 == '
-=' || t1 == '
/=')a1 = 1
;
if (t2 == '
=' || t2 == '
+=' || t2 == '
-=' || t2 == '
/=')b1 = 1
;
if (a1 >b1)
if (a1 ==b1)
if (a1}char operate(char a, char theta, char
b)
if (theta == '-'
)
if (theta == '*'
)
if (theta == '/'
)
returnm;}
intmain()
push(s, n);
}while (1
) cout
<< "
運算子個數:
"<}
棧的基本操作及實現(順序棧)
順序儲存結構來實現的棧稱為順序棧,它利用一組位址連續的儲存單元存放自棧底到棧頂的資料元素,同時附設乙個指標top來指示當前棧頂的位置。注意,是c 特有的用來表示引用呼叫,所以此檔案應以.cpp字尾儲存 結構體為 define maxsize 50 typedef int elemtype typed...
棧的實現及基本操作pta棧的操作
給定乙個初始為空的棧和一系列壓棧 彈棧操作,請編寫程式輸出每次彈棧的元素。棧的元素值均為整數。輸入格式 輸入第1行為1個正整數n,表示操作個數 接下來n行,每行表示乙個操作,格式為1 d或0。1 d表示將整數d壓棧,0表示彈棧。n不超過20000。輸出格式 按順序輸出每次彈棧的元素,每個元素一行。若...
棧和佇列的儲存及基本操作
一 實驗目的 1 掌握棧的順序儲存及鏈式儲存實現,並實現進棧與出棧操作 2 掌握佇列的順序儲存及鏈式儲存實現,並實現入隊與出隊操作。二 實驗作業 在給出部分 的基礎上完成 1.在順序棧儲存體上,編寫進棧與出棧函式,在主函式呼叫進棧與出棧,實現若干次的進棧與出棧操作。2.在鏈棧儲存體上,編寫進棧與出棧...