掌握棧及佇列基本操作的實現

2022-03-31 00:13:17 字數 4722 閱讀 9091

一、源程式

棧與佇列基本操作:

#includeusing

namespace

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.在鏈棧儲存體上,編寫進棧與出棧...