數(shù)據(jù)結(jié)構(三):棧與隊列

3.1?若按教科書3.1.1節(jié)中圖3.1(b)所示鐵道進行車廂調(diào)度(注意:兩側(cè)鐵道均為單向行駛道)凰锡,則請回答:

(1) 如果進站的車廂序列為123,則可能得到的出站車廂序列是什么祈噪?

(2) 如果進站的車廂序列為123456,則能否得到435612和135426的出站序列尚辑,并請說明為什么不能得到或者如何得到(即寫出以‘S’表示進棧和以‘X’表示出棧的棧操作序列)辑鲤。

可分為五種情況:

(1):1、2杠茬、3進月褥,再3、2瓢喉、1出宁赤,即321;

(2):1進栓票,1出决左;2進,2出;3進佛猛、3出惑芭,即123;

(3):1進继找,2進遂跟,2出,1出码荔,3進3出漩勤,即213;

(4):1進缩搅,1出越败,2進,3進硼瓣,3出究飞,2出,即132

(5):1進堂鲤,2進亿傅,2出,3進瘟栖,3出葵擎,1出,即231半哟;

也可以反過來思考這個問題:排列組合總共有6種情況酬滤,其中只有312不可能,因為3進棧必然有1寓涨、2也進棧盯串,只會有321的情況。

3.2?簡述棧和線性表的差別戒良。

3.3?寫出下列程序段的輸出結(jié)果(棧的元素類型SElemType為char)体捏。

void main()

{

Stack S;

char x, y;

InitStack(S);

x = ’c’; y = ’k’;

Push(S, x); Push(S, ‘a(chǎn)’); Push(S, y); Pop(S, x);

Push(S,‘t’); Push(S, x); Pop(S, x); Push(S,‘s’);

while(!StackEmpty(S))

{

Pop(S,y);

printf(y);

}

printf(x);

}

結(jié)果輸出:stack

棧是先進后出。

Push(S,x); Push(S, ‘a(chǎn)’); Push(S,y); 推進去c a k,棧內(nèi)容c a k

Pop(S,x); Push(S, ‘t’); Push(S,x); 推出k,x=k 棧內(nèi)容c a;推進t, 站內(nèi)容c a t; 推入x=k,棧內(nèi)容 catk

Pop(S,x); Push(S, ‘s’); 推出k, x=k 棧內(nèi)容cat,推進s,棧內(nèi)容cats

下面循環(huán)打印stac,

最后printf(x)糯崎,即打印k

3.4?簡述以下算法的功能(棧的元素類型SElemType為int)几缭。

(1)status algo1(Stack S)

{

int i, n, A[255];

n=0;

while(!StackEmpty(S))

{

n++; Pop(S, A[n]);

}

for(i=1; i<=n; i++)

Push(S, A[i]);

}

status algo1(Stack s){

//定義函數(shù) algo1, 參數(shù)為Stack類型,返回值status類型

int i,n ,A[255]; //定義變量

n=0;

while (!StackEmpty(s)) {

n++;

Pop(S,A[n]);

}

//如果棧不空,棧頂元素出棧,放在A[n]里面,n++,指向數(shù)組下一個位置,同時記錄了個數(shù)

for (i=1,i<=n;i++)

push(S,A[i];

//將出棧的所有元素再入棧

}

(2)status algo2(Stack S,int e)

{

Stack T; int d;

InitStack(T);

while(!StackEmpty(S))

{

Pop(S, d);

if(d!=e)

Push(T, d);

}

while(!StackEmpty(T))

{

Pop(T, d);

Push(S, d);

}

void algo2 (Stack S,int e){

Stack T, int d;

InitStack(T);

//初始化棧T

while(!StackEmpty(S)){

//循環(huán)條件:如果棧S不為空

Pop(S,d);

//S最頂元素出棧

if(d!=e) Push(T,d);

//若d!=e拇颅,就將d賦給棧T

}

while(!StackEmpty(T)){

//循環(huán)條件:如果棧T不為空

Pop(T,d);

//T最頂元素出棧

Push(S,d);

//將d賦給棧T

}

}

綜上所述:該代碼的作用是 將棧S中不等于e的元素賦給棧T奏司,然后將棧T中的元素賦給S;所以總功能是清除棧S中等于e的元素 }

3.5?假設以S和X分別表示入棧和出棧的操作樟插,則初態(tài)和終態(tài)均為空棧的入棧和出棧的操作序列可以表示為僅由S和X組成的序列韵洋。稱可以操作的序列為合法序列(例如竿刁,SXSX為合法序列,SXXS為非法序列)搪缨。試給出區(qū)分給定序列為合法序列或非法序列的一般準則食拜,并證明:兩個不同的合法(棧操作)序列(對同一輸入序列)不可能得到相同的輸出元素(注意:在此指的是元素實體,而不是值)序列副编。

3.6? 試證明:若借助棧由輸入序列12…n得到的輸出序列為p1p2…pn(它是輸入序列的一個排列)负甸,則在輸出序列中不可能出現(xiàn)這樣的情形:存在著i

3.7?按照四則運算加、減痹届、乘呻待、除和冪運算(↑)優(yōu)先關系的慣例,并仿照教科書3.2節(jié)例3-2的格式队腐,畫出對下列算術表達式求值時操作數(shù)棧和運算符棧的變化過程:

A-B×C/D+E↑F

3.8?試推導求解n階梵塔問題至少要執(zhí)行的move操作的次數(shù)蚕捉。

3.9?試將下列遞推過程改寫為遞歸過程。

void ditui(int n)

{

int i;

i = n;

while(i>1)

cout<

}

3.10?試將下列遞歸過程改寫為非遞歸過程柴淘。

void test(int &sum)

{

int x;

cin>>x;

if(x==0)

sum=0;

else

{

test(sum);

sum+=x;

}

cout<

}

3.11?簡述隊列和堆棧這兩種數(shù)據(jù)類型的相同點和差異處迫淹。

3.12?寫出以下程序段的輸出結(jié)果(隊列中的元素類型QElemType為char)。

void main()

{

Queue Q;

InitQueue(Q);

char x= ‘e’, y= ‘c’;

EnQueue(Q, ‘h’);

EnQueue(Q, ‘r’);

EnQueue(Q, y);

DeQueue(Q, x);

EnQueue(Q, x);

DeQueue(Q, x);

EnQueue(Q, ‘a(chǎn)’);

While(!QueueEmpty(Q))

{

DeQueue(Q,y);

cout<

}

cout<

}

首先要明白隊列是 先進先出

InQueue(Q,'H');

InQueue(Q,'R');

InQueue(Q,y);

//現(xiàn)在隊列內(nèi)容從前到后依次是HRC

OutQueue(Q,x);InQueue(Q,x);

//为严,H 出隊列敛熬,并且把H賦于x,然后x='H' 入隊列第股,現(xiàn)在隊列內(nèi)容從前到后依次是RCH

OutQueue(Q,x);InQueue(Q,'A');

//应民,R 出隊列,并且把H賦于x夕吻,注意現(xiàn)在x=‘R’,因為最后輸出的x瑞妇,就是R;然后 'A' 入隊列梭冠,現(xiàn)在隊列內(nèi)容從前到后依次是CHA

while(!QEmpty(Q))

{OutQueue(Q,y);

printf(y);

}

//這個循環(huán)依次輸出CHA

printf(x);

//輸出R

3.13?簡述以下算法的功能(棧和隊列的元素類型均為int)。

void algo3(Queue &Q)

{

Stack S;

int d;

InitStack(S);

while(!QueueEmpty(Q))

{

DeQueue(Q, d);

Push(S, d);

}

while(!StackEmpty(S))

{

Pop(S, d);

EnQueue(Q, d);

}

}

3.14?若以1234作為雙端隊列的輸入序列改备,試分別求出滿足以下條件的輸出序列:

(1) 能由輸入受限的雙端隊列得到控漠,但不能由輸出受限的雙端隊列得到的輸出序列。

(2) 能由輸出受限的雙端隊列得到悬钳,但不能由輸入受限的雙端隊列得到的輸出序列盐捷。

(3) 既不能由輸入受限的雙端隊列得到,也不能由輸出受限的雙端隊列得到的輸出序列默勾。

算法設計部分正在研究,希望大家多多指教

題目轉(zhuǎn)載自:迷路的國王 - 博客園,但是他的題目答案實在是簡略,我又自己重新寫了做了一遍

數(shù)據(jù)結(jié)構非常重要,溫故而知新,必有新的收獲

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碉渡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子母剥,更是在濱河造成了極大的恐慌滞诺,老刑警劉巖形导,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異习霹,居然都是意外死亡朵耕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門淋叶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阎曹,“玉大人,你說我怎么就攤上這事煞檩〈ο樱” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵斟湃,是天一觀的道長熏迹。 經(jīng)常有香客問我,道長桐早,這世上最難降的妖魔是什么癣缅? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮哄酝,結(jié)果婚禮上友存,老公的妹妹穿的比我還像新娘。我一直安慰自己陶衅,他們只是感情好屡立,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搀军,像睡著了一般膨俐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上罩句,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天焚刺,我揣著相機與錄音,去河邊找鬼门烂。 笑死乳愉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的屯远。 我是一名探鬼主播蔓姚,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼慨丐!你這毒婦竟也來了坡脐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤房揭,失蹤者是張志新(化名)和其女友劉穎备闲,沒想到半個月后晌端,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡浅役,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年斩松,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片觉既。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡惧盹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞪讼,到底是詐尸還是另有隱情钧椰,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布符欠,位于F島的核電站嫡霞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏希柿。R本人自食惡果不足惜诊沪,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望曾撤。 院中可真熱鬧端姚,春花似錦、人聲如沸挤悉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽装悲。三九已至昏鹃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間诀诊,已是汗流浹背洞渤。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留属瓣,地道東北人您宪。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像奠涌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子磷杏,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1.把二元查找樹轉(zhuǎn)變成排序的雙向鏈表 題目: 輸入一棵二元查找樹溜畅,將該二元查找樹轉(zhuǎn)換成一個排序的雙向鏈表。 要求不...
    曲終人散Li閱讀 3,301評論 0 19
  • 課程介紹 先修課:概率統(tǒng)計极祸,程序設計實習慈格,集合論與圖論 后續(xù)課:算法分析與設計怠晴,編譯原理,操作系統(tǒng)浴捆,數(shù)據(jù)庫概論蒜田,人...
    ShellyWhen閱讀 2,267評論 0 3
  • 人間四月芳菲盡,正值櫻花爛漫時选泻。滿山遍野的粉紅冲粤,映入眼簾。一條條櫻花之路也被寫成了最美的詩行页眯;一群群看花之人也定格...
    雪上陽光閱讀 344評論 4 3
  • 早上起的較早,盡管昨天睡的很晚碌奉。一早便告知胡欣我的想法短曾,現(xiàn)已堅決不買房了。做了一些工作赐劣,卡在了一處嫉拐。晚上出去散歩,...
    小王加油啊閱讀 204評論 0 0
  • “總有一個人偷偷喜歡你隆豹⊥盅遥” 前些日子瀏覽網(wǎng)頁,突然竄出這句話璃赡,不由感慨頗深判哥。 有人說:得不到的往往是最珍貴的。 可...
    高白牧閱讀 212評論 2 1