import java.util.Queue
import java.util.LinkedList
fun main(){
var q: Queue<String> = LinkedList<String>()
var n = readln().toInt()
for(i in 1..n){
var inp = readln().split(" ")
if(inp[0]=="1"){
q.add(inp[1])
}
else if(inp[0]=="2"){
if(q.isEmpty()){
println("-1")
}
else{
println("${q.peek()}")
}
}
else if(inp[0]=="3"){
if(q.isEmpty()==false){
q.remove()
}
}
}
}
今天是資結的最後一天,我們來學一個非常經典也常用的資結——樹Tree。
樹的資料是這樣存的,我們有很多個節點,除了一個特殊節點我們叫它根root,其他節點都會有自己的父節點,也有可能有自己的子節點,比如下圖。
比如這張圖中,資料存1的這個節點就是root,2跟3是他的子節點。(圖片是從這裡偷的,希望沒有侵權。)
不過Kotlin是沒有Tree可以用的,所以我們來手刻吧。
import java.util.LinkedList
class Node{
var data:Int = 0
var son:LinkedList<Node> = LinkedList<Node>()
fun addSon(new_son_data:Int){
var new_son = Node()
new_son.data = new_son_data
son.add(new_son)
}
}
class Tree{
var root = Node()
}
那我們要存上面那張圖就可以這樣做。
fun main(){
var tree = Tree()
tree.root.data = 1
tree.root.addSon(2)
tree.root.addSon(3)
tree.root.son[0].addSon(4)
tree.root.son[0].addSon(5)
tree.root.son[0].son[1].addSon(6)
tree.root.son[0].son[1].addSon(7)
tree.root.son[0].son[1].addSon(8)
}
今天沒有練習題,自己嘗試實作一顆樹就好。