陳博坐在位置上,視野高度不夠,完全看不到對方書寫的內容,貿貿然站起來旁窺影響不好,所以他選擇老實待著。
“我看你的簡歷有寫會很多種編程語言,這里是三道題,都做出來我就要你。”吳憂把寫滿的紙張遞給陳博,坐到對面的椅子上。
內容不多,基本在三句話內,陳博掃了眼,這難度甚至不如培訓班專門進行應試訓練的題目難。
“你要多久,這三道題。”
“這個啊”
陳博評估了一下難度,橫向比較自己的水平,吳憂既然那么問,很可能考核時間也算在成績的一部分,不能太長,但又不能過短,免得翻車。
“10分鐘吧。”
“10分鐘么?”吳憂擠眉板著臉。
“8分鐘,我盡量。”陳博以為對方嫌時間太長,于是又縮短了20。
“年輕人不要把話說得太滿。”
“試一試先。”
題目已經認真瀏覽過,可以直接上手,省去閱卷時間后,光寫的話8分鐘應該勉勉強強,所以陳博一開始預留多2分鐘,想的是做完還能驗算遍。
這下把富余的時間鎖死,就必然在追求正確率和效率之間存在矛盾。
第一道題是二叉樹遍歷,吳憂給的是入門級的例題,a是根節點,左右跟分別是b和c,左根的b與d單獨相連,而d與e單獨相連,右根的c和f、g相連。
要求分別寫出先序遍歷、中序遍歷和后序遍歷,先序遍歷是按照根左右的順序沿一定路徑經過路徑上所有的結點,先根后左再右。
中序遍歷相對麻煩點,先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。
后序遍歷大同小異,三者的區別在于遍歷順序,跟一筆畫有些許相似之處。
陳博幾乎沒有思考,行云流水般在上面寫上abdgcef、dgbaecf和gdbefca。
第二題是鏈表,陳博起初沒看仔細,現在重新審題才發現有三個小問。
[從頭到尾打印一份單鏈表]
[在不遍歷鏈表的前提下刪除一個無頭單鏈表的非尾節點]
[在不遍歷鏈表的前提下在無頭單鏈表中的一個節點前插入另一個節點]
可惜是手寫,如果換做電腦輸入的話碼起來會快很多,因為單鏈表有指向性,前一個節點只能指向下一個節點,因此最簡單的實現辦法就是遞歸,先遍歷再輸出。
“好久沒手寫代碼了。”
陳博書寫之余還得留心字母的大小寫,不一定是換行頂格就非要大寫,代碼的括號也是重中之重,有的是[],有的是(),還有的是{},他特地描多了幾筆,好讓它們看上去略有不同。
刪除非尾節點通過遍歷是很好實現的,這里故意增加了難度,不過單鏈表只有next指針,只指向下一個元素,如果要刪除其中一個節點,從刪除目標節點的下一個節點入手是個不錯的切入點。
首先,把要刪除節點的下一個節點值賦予刪除節點,再修改刪除節點的指向,最后刪除下一個節點,就可以實現要求。
代碼里有很多特殊符號,陳博在寫時連大小長度都統統考慮進去,盡量讓它們的比例看上去跟電腦里的差不太多。
他沒留意時間,反正吳憂沒喊停,自己接著做便是。
“啊嚏~”</p>