資料結構 station

2022-07-08 10:00:23 字數 1539 閱讀 1533

問題描述

一天,小 l 突然對列車的進出站問題產生了興趣,如下圖所示:

列車只能從 a 進站,或從 b 出站。

列車從 a 進站,進站順序為 1, 2, 3, 4, 5

列車從 b 出站,出站順序為 5, 4, 3, 2, 1

現在,小 l 想知道:

列車從 a 進站,進站順序為 1~n

列車從 b 出站,給定出站的順序,判斷是否可能按照這個順序出站

★資料輸入

第一行乙個正整數 n(1<=n<=1000)。

第二行包含 n 個正整數,為 1~n 的某個排列

★資料輸出

若能夠按照給定的順序出站,輸出」yes」 (沒有引號)

否則,輸出」 no」 (沒有引號)

解題思路

思路一:判斷出棧序列中,比本數小的數是否按降序排列

時間複雜度o(n^2),本題1<=n<=1000,可用

易寫,不易錯,效率低

思路二:使用棧模擬進棧出棧

時間複雜度o(n)

易寫錯,效率高

code

solve 1

1 #include 2 #include 3

4bool popable(int *p,int

len)519

}20}21

return

true;22

}2324int

main()

25

solve 2

1 #include 2 #include 3

4#define error 0x7fffffff

5#define type int67

class

mystack//std::stack

811 ~mystack()

12bool empty()

13 type top() //

每次用top()前應先呼叫empty(),判斷是否為空

14void pop() //

本題掉pop()前都有調top()與empty(),可保證不為空

15void push(type num) //

構造傳入maxsize,保證不爆棧

16private:17

intmaxsize;

18int

size;

19 type *arr;

20};

2122

2324

intmain()

2542

else

if(!s.empty() && s.top()==p[j])

4347

else

4852}53

54while(!s.empty())

5561

else

6267

}68 printf("

yes\n");

6970

free

(p);

71return0;

72 }

資料結構 資料結構緒論

資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...

資料結構 資料結構演算法

分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...

資料結構 01 資料與資料結構

1.資料data 資料是描述客觀事物的符號,是計算機中可以操作的物件,是能被計算機識別,並輸入給計算機處理的符號集合。2.資料元素data elements 資料元素是組成資料的 有一定意義的基本單位,在計算機中通常作為整體進行處理。3.資料物件data object 資料物件是性質相同的資料元素的...