奧林匹亞資訊班

6/14

講師:吳崇維(wayne)

先熱身一題!

https://codeforces.com/problemset/problem/282/A

字串處理!

資料結構 1

Stack (堆疊)

Stack

盤子, 就是 stack 的最佳形容

 

stack 的特性是:先進後出

也就是可以想像成

你先疊進去的盤子(越下面)

一個一個拿出來的時候,就越晚拿出來

 

 

Stack

 

stack 有兩種基本操作

1. push

將一個元素(通常是數字)

放進stack裡面

(將一個盤子疊上去)

2. pop

將一個元素從 stack 裡面拿出來

並且只能拿最上面的元素

(將一個盤子輕輕拿走)

 

Stack 操作模擬:

push(4);

push(3);

push(2);

push(1);

pop();

pop();

push(5);

pop();

pop();

pop();

[]                 前方代表堆疊下方,尾端是上方

[4]

[4,3]

[4,3,2]

[4,3,2,1]

[4,3,2]

[4,3]

[4,3,5]

[4,3]

[4]

[]

stack 的模擬

 

通常在程式,為了方便,會用一個陣列代表 stack

(把盤子擺平的,對應陣列)

 

接著試試看實作這個資料結構

只需要作 pop push

並且在main裡面寫自己的東西測試~

寫完之後用上面的例子實計測試的話

main會變成

更多的操作!

 

stack還可以衍生出一些操作

 

  • top();   將最上面的元素找出來,但不pop掉
  • getSize();  返回整個stack目前的大小。
  • isEmpty(); 確認stack是否為空,如果空的話,return 1;

Stack的練習

字串反轉

 

試著使用 stack ,將一個字串以逆序輸出~(不要直接反著跑for)

 

若輸入 apple => elppa

若輸入 racecar  => racecar

若輸入 Wayne   =>  enyaW

 

因為是字串,所以剛剛的資料結構的型態們,要從 int 改成 char !

作業!

AC以下幾題 (下週最後一次上課)

  • https://codeforces.com/contest/81/problem/A

這題難度較高,需要多點心思思考

FeedBack!

一起努力快樂寫程式吧!

Made with Slides.com