1. 程式人生 > >java單鏈表

java單鏈表

align 其他 難度 AS 指定位置 index 通過 AD 都是

單鏈表

一、單鏈表的概念

      鏈表是最基本的數據結構,其存儲的你原理圖如下圖所示

          技術分享圖片

      上面展示的是一個單鏈表的存儲原理圖,簡單易懂,head為頭節點,他不存放任何的數據,只是充當一個指向鏈表中真正存放數據的第一個節點的作用,而每個節點中都有一個next引用,指向下一個節點,就這樣一節一節往下面記錄,直到最後一個節點,其中的next指向null。

      鏈表有很多種,比如單鏈表,雙鏈表等等。我們就對單鏈表進行學習,其他的懂了原理其實是一樣的。

二、用java實現單鏈表

      語言只是一種工具,數據結構真正體會的是那種思想,這句話確實是這樣,不管用什麽寫,其思想是不改變的。以前使用的是C++,現在用的是java,一步步來實現。

      2.1、編寫一個Node類來充當結點的模型。我們知道,其中有兩個屬性,1存放數據的data,2存放下一結點的引用,

          技術分享圖片

技術分享圖片 View Code

      2.2、單鏈表的簡單操作(增加,刪除,獲取總長度,鏈表元素排序,鏈表遍歷)  

            技術分享圖片

         2.2.1、增加結點操作,addNode(Node)

            技術分享圖片 

           想法: 一開始也會想如果什麽結點也沒有。是不是需要判斷插入的是第一個結點的問題,但寫完後發現沒有必要,是不是第一個結點操作都是一樣的,所以通過移動的指針遍歷整個鏈表,找到最後一個結點,往後添加即可。沒難度。      

技術分享圖片 View Code

         2.2.2、插入結點到鏈表的指定位置。 insertNodeByIndex(int index,Node node)

             技術分享圖片 

            註意:要知道插入操作需要的前提是什麽,你才好寫代碼,寫完之後,考慮如果在特殊位置上插入,是否也一樣。還有需要進行插入位置是否可行的判斷。

技術分享圖片 View Code

         2.2.3、刪除指定位置上的結點  delNodeByIndex(int index)

              技術分享圖片

技術分享圖片 View Code

          2.2.4、單鏈表進行選擇排序  selectSortNode()  

                前提要知道什麽是選擇排序,如果不會,請查看我講解排序的文章

              技術分享圖片

              分析

              技術分享圖片

技術分享圖片 View Code

          2.2.5、單鏈表進行插入排序  insertSortNode()

              前提:要知道什麽是插入排序。這個使用插入排序寫了我好久,懵逼一樣的狀態,並且我認為我自己寫效率不是很高。不管怎樣,是騾子是馬拿出來溜溜

              技術分享圖片

              技術分享圖片

技術分享圖片 View Code

    

          2.2.6、當然還可以使用冒泡排序、歸並排序,等等等,都可以自己去嘗試,我就不寫了。如果不懂這些排序,那麽就看我寫排序的文章把。

          2.2.7、計算單鏈表的長度

              技術分享圖片

技術分享圖片 View Code

          2.2.8、遍歷單鏈表,打印data

               技術分享圖片

java單鏈表