昨天的 Java 實(shí)現(xiàn)單例模式 中,我們的雙重檢驗(yàn)鎖機(jī)制因?yàn)橹噶钪嘏判騿?wèn)題而引入了 volatile
關(guān)鍵字,不少朋友問(wèn)我,到底為啥要加 volatile
這個(gè)關(guān)鍵字呀,而它,到底又有什么神奇的作用呢?
對(duì) volatile
這個(gè)關(guān)鍵字,在昨天的講解中我們簡(jiǎn)單說(shuō)了一下:被 volatile
修飾的共享變量,都會(huì)具有下面兩個(gè)屬性:
共享變量:如果一個(gè)變量在多個(gè)線程的工作內(nèi)存中都存在副本,那么這個(gè)變量就是這幾個(gè)線程的共享變量。
可見(jiàn)性:一個(gè)線程對(duì)共享變量值的修改,能夠及時(shí)地被其它線程看到。
對(duì)于重排序,不熟悉的建議直接 Google 一下,這里也就不多提了。只需要記住,在多線程中操作一個(gè)共享變量的時(shí)候,一定要記住加上 volatile 修飾即可。
由于時(shí)間關(guān)系,我們還是得先進(jìn)入今天的正題,對(duì)于 volatile 關(guān)鍵字,在要求并發(fā)編程能力的面試中還是很容易考察到的,后面我也會(huì)簡(jiǎn)單給大家講解。
輸入一個(gè)單鏈表的頭結(jié)點(diǎn),從尾到頭打印出每個(gè)結(jié)點(diǎn)的值。
我們的鏈表有很多,單鏈表,雙向鏈表,環(huán)鏈表等。這里是最普通的單鏈表模式,我們一般會(huì)在數(shù)據(jù)存儲(chǔ)區(qū)域存放數(shù)據(jù),然后有一個(gè)指針指向下一個(gè)結(jié)點(diǎn)。雖然 Java 中沒(méi)有指針這個(gè)概念,但 Java 的引用恰如其分的填補(bǔ)了這個(gè)問(wèn)題。
看到這道題,我們往往會(huì)很快反應(yīng)到每個(gè)結(jié)點(diǎn)都有 next 屬性,所以要從頭到尾輸出很簡(jiǎn)單。于是我們自然而然就會(huì)想到先用一個(gè) while 循環(huán)取出所有的結(jié)點(diǎn)存放到數(shù)組中,然后再通過(guò)逆序遍歷這個(gè)數(shù)組,即可實(shí)現(xiàn)逆序打印單鏈表的結(jié)點(diǎn)值。
我們假定結(jié)點(diǎn)的數(shù)據(jù)為 int 型的。實(shí)現(xiàn)代碼如下:
public class Test05 { public static class Node { int data; Node next; } public static void printLinkReverse(Node head) { ArrayList<Node> nodes = new ArrayList<>(); while (head != null) { nodes.add(head); head = head.next; } for (int i = nodes.size() - 1; i >= 0; i--) { System.out.print(nodes.get(i).data + " "); } } public static void main(String[] args) { Node head = new Node(); head.data = 1; head.next = new Node(); head.next.data = 2; head.next.next = new Node(); head.next.next.data = 3; head.next.next.next = new Node(); head.next.next.next.data = 4; head.next.next.next.next = new Node(); head.next.next.next.next.data = 5; printLinkReverse(head); } }
文章名稱:面試題:用Java逆序打印鏈表-創(chuàng)新互聯(lián)
URL標(biāo)題:http://aaarwkj.com/article16/dgdedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、全網(wǎng)營(yíng)銷推廣、電子商務(wù)、手機(jī)網(wǎng)站建設(shè)、域名注冊(cè)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容