瀋陽師範大學大二上資料結構 棧和佇列

2021-10-11 22:42:18 字數 3714 閱讀 6971

7-1 堆疊操作合法性 (10分)

假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行(如沒有出現刪除時棧空)且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。

輸入格式:

輸入第一行給出兩個正整數n和m,其中n是待測序列的個數,m(≤50)是堆疊的最大容量。隨後n行,每行中給出乙個僅由s和x構成的序列。序列保證不為空,且長度不超過100。

輸出格式:

對每個序列,在一行中輸出yes如果該序列是合法的堆疊操作序列,或no如果不是。

輸入樣例:

4 10

sssxxsxxsx

sssxxsxxs

ssssssssssxss*********xx

sssxxs***

輸出樣例:

yes

nono

no

#include

#include

typedef

struct mystack* stackpoint;

struct mystack

;class

classstack

void

stackpush

(char newdata)

else

this

->stacklength++;}

void

stackpop()

intgetstacklength()

};intmain()

}if(option ==

'x')

else

} option =

getchar()

;}if(stackfirstpoint-

>

getstacklength()

!=0)if

(stat ==

false

)else

}}

7-4 括號匹配 (10分)

檢查一段c語言**的小括號( )、 中括號 [ ] 和大括號 是否匹配。

輸入格式:

在一行中輸入一段c語言**,長度不超過1000個字元(行末以換行符結束)。

輸出格式:

第一行輸出左括號的數量和右括號的數量,中間以乙個空格間隔。

若括號是匹配的,在第二行列印yes,否則列印no。

輸入樣例1:

for

(int i=

0; i)

輸出樣例1:

8 8

yes

輸入樣例2:

for(int i=0; i=0;
輸出樣例2:

2 2

no

#include

#include

typedef

struct node* nodepoint;

typedef

class

stack

* stackpoint;

struct node

;class

stack

void

leftadd()

void

rightadd()

intgetleft()

intgetright()

intgetlength()

void

stackpush

(char data)

else

this

->stacklength++;}

char

stackpop()

nodepoint deletenode;

char data;

deletenode=

this

->p;

data=p-

>data;

this

->p=

this

->p-

>link;

delete

(deletenode)

;this

->stacklength--

;return data;}}

;bool

varify

(char data1,stackpoint* s1)if(

(*s1)

->

getlength()

>0)

if(data1==

')'&&var1!=

'(')

if(data1==

'}'&&var1!='if

(data1==

']'&&var1!=

'[')

return stat;

}void

printnode

(stackpoint* s1)

}bool

readnode()

if(data1==

']'||data1==

'}'||data1==

')')

data1=

getchar()

;}if(s1-

>

getright()

!=s1-

>

getleft()

)std::cout<>

getleft()

<<

" "<>

getright()

<<

"\n"

;return stat;

}int

main()

else

}

7-5 佇列操作 (10分)

請實現乙個myqueue類,實現出隊,入隊,求佇列長度.

實現入隊函式 void push(int x); 實現出隊函式 int pop(); 實現求佇列長度函式 int size();

輸入格式:

每個輸入包含1個測試用例。每個測試用例第一行給出乙個正整數 n (n <= 10^6) ,接下去n行每行乙個數字,表示一種操作: 1 x : 表示從隊尾插入x,0<=x<=2^31-1。 2 : 表示隊首元素出隊。 3 : 表示求佇列長度。

輸出格式:

對於操作2,若隊列為空,則輸出 「invalid」,否則請輸出隊首元素。 對於操作3,請輸出佇列長度。 每個輸出項最後換行。

輸入樣例:

532

1 100

32

輸出樣例:

0

invalid

1100

#include

#include

typedef

struct mynode* nodepoint;

struct mynode

;class

myquene

intpop()

}int

size()

myquene()

};intmain()

break

;case2:

else

}break

;case3:

break;}

}}

瀋陽師範大學 資料結構 PTA 佇列操作

7 5 佇列操作 10分 請實現乙個myqueue類,實現出隊,入隊,求佇列長度.實現入隊函式 void push int x 實現出隊函式 int pop 實現求佇列長度函式 int size 輸入格式 每個輸入包含1個測試用例。每個測試用例第一行給出乙個正整數 n n 10 6 接下去n行每行乙...

瀋陽師範大學PTA 資料結構 堆疊操作合法性

7 1 堆疊操作合法性 10分 假設以s和x分別表示入棧和出棧操作。如果根據乙個僅由s和x構成的序列,對乙個空堆疊進行操作,相應操作均可行 如沒有出現刪除時棧空 且最後狀態也是棧空,則稱該序列是合法的堆疊操作序列。請編寫程式,輸入s和x序列,判斷該序列是否合法。輸入格式 輸入第一行給出兩個正整數n和...

2023年大二上 資料結構 棧(2) 鏈棧演算法庫

main.cpp 檔名稱 annpion.cpp 完成日期 2015年11月6日 版本號 v1.0 問題描述 main.cpp 輸入描述 無。輸出描述 輸出各個函式的測試結果。include include listack.h int main printf n printf 8 鏈棧為 s n s...