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