資料結構鐵軌問題 資料結構練習專題

2021-10-13 08:27:17 字數 2366 閱讀 8037

下面我給大家帶來一些資料結構的題,供大家欣賞:

(一)棧

鐵軌試題描述:

某城市有乙個火車站,鐵軌鋪設如圖所示,有n節車廂從a方向駛入車站,按進站順序編號為1至n。你的任務是判斷是否能讓它們按照某種特定的順序進入b方向的鐵軌並駛出車站。為了重組車廂,你可以借助中轉站c。這是乙個可以停放任意多節車廂的車站,但由於末端封頂,駛入c的車廂必須按照相反的順序駛出車站。例如:出站順序(5,4,1,2,3)是不可能的,而(5,4,3,2,1)是可能的。對於每節車廂,一旦從a移入c,就不能再回到a了;一旦從c移入b,就不能回到c了。換句話說,在任意時刻,只有兩種選擇a->c和c->b。

現在給你一種1到n的排列,請你判斷是否是題目描述的一種可能,如果是請輸出yes,否則輸出no

輸入:兩行,第一行有乙個正整數n,表示有n節車廂,第二行有n個正整數,即1到n的一種排列,兩兩之間有乙個空格分隔。

輸出:yes或者no

輸入示例:

5 4 1 2 3

輸出示例:

no棧就好

#include #include#include#include

#define maxn 100 + 10

using namespacestd;inta[maxn],n;intmain()

memset(a,66,sizeof(a));

stacks;

scanf("%d",&n);for(int i=1;i<=n;i++)

scanf("%d",&a[i]);int a=1,b=1;bool book=true;while(b<=n)

else if(!s.empty() && s.top()==a[b])

s.pop();

b++;

}else if(a<=n)

s.push(a++);elseif(book)

printf("yes");elseprintf("no");//system("pause");

(優先佇列)

阿格斯試題描述:

你的任務是編寫乙個稱為 argus 的系統。該系統支援乙個 register 命令 register q_num period,該命令註冊了乙個觸發器,它每 period 秒鐘就會產生一次編號為 q_nurn 的事件。你的任務是模擬出前k個事件。如果多個事件同時發生,先處理 q_num 小的事件

輸入:前若干行是register命令,以「#」結尾;最後一行是整數k。對於每條命令,1≤q_num,period≤3 000。k≤10 000。命令條數n不超過1 000。

輸出:輸出k行,即前後個事件的q_num

輸入示例:

water 2 35

eat 1 76

drink 3 35

輸出示例

#include #include#include

using namespacestd;structnode

intk;

cin>>k;for(int i=1;i<=k;i++)

node a;

a.num=q.top().num;

a.data=q.top().data;

a.tie=q.top().tie+q.top().data;

printf("%d\n",q.top().num);

q.pop();

q.push(a);

資料結構結合:

試題描述:

你有乙個類似「包包」的資料結構,支援兩種操作,如下表所示。 1x:把元素x放進包包 2:從包包中拿出乙個元素 給出一系列操作以及返回值,你的任務是猜猜這個「包包」到底是什麼。它可能是乙個棧

輸入:第一行為乙個整數n(1≤n≤1 000)。以下n行每行要麼是一條型別1的命令,要麼是一條型別2的命令後面跟著乙個整數x(1≤x≤100)。這個整數x表示執行完這條型別2的命令後,包包無錯地返回了x。輸入檔案大小不超過1mb。

輸出:輸出一行。一共有5種可能的輸出。

stack:一定是乙個棧

queue:一定是乙個佇列

priority queue:一定是乙個優先佇列

impossible:一定不是以上三種

not sure:至少有兩種是可能的

輸入示例:

1 51 3

1 22 2

2 3輸出示例:

stack

#include #include#include#include

using namespacestd;

queueq;

stacks;

priority_queue,less >pq;intmain()

if(a==2)

int ans=qflag+pqflag+sflag;if(ans>1)

cout<

if(ans==0)

cout<

資料結構鐵軌問題 stack 鐵軌問題

每輛火車都從a方向駛入車站,再從b方向駛出車站,同時它的車廂可以進行某種形式的重新組合。假設從a方向駛來的火車有n節車廂 n 1000 分別按順序編號為1,2,n。假定在進入車站之前每節車廂之間都是不連著的,並且它們可以自行移動,直到處在b方向的鐵軌上。另外假定車站c裡可以停放任意多節的車廂。但是一...

資料結構複習專貼

資料結構這個東西實在是比較鬱悶,可是要考試了,就複習一下吧.第一章 概論 1.資料是資訊的載體,是能夠輸入到計算機中,並被計算機識別,儲存和處理的符號的集合.2.資料元素是資料中具有獨立意義的個體.乙個資料元素可以由若干各資料項 稱為字段,域 組成.3.資料型別是具有相同性質的計算機資料的集合及再這...

資料結構練習

include include define size 20 typedef struct list 重新命名結構體 list t 建立 list t creat list int size list length 0 空表初始化,實際長度為0 return list 返回堆區申請的首位址 判空 i...