鍊錶的使用

2021-08-27 19:07:09 字數 2129 閱讀 7751

資料儲存共有兩種形式,一種是連續的,比如說陣列,儲存時是連續的;還有一種是離散的,這就是鍊錶。

鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存

資料元素

的資料域,另乙個是儲存下乙個結點位址的引用域。

鍊錶又分為單鏈表,雙鏈表和迴圈鍊錶。

我們先來看單鏈表,圖示為:

由圖我們可以看出結點左端的方格是資料域,用來儲存資料,而右端是引用域,用來儲存下乙個節點的位址,便於我們方便的讀取到。單鏈表的引用域是單一指向的,指向他的下乙個結點。第乙個結點稱之為根節點,最後乙個節點稱之為尾結點。

迴圈鍊錶是與單鏈表一樣,是一種鏈式的儲存結構,所不同的是,迴圈鍊錶的尾結點的引用域是指向該迴圈鍊錶的根節點,從而構成乙個環形的鏈。

而雙鏈表就比單鏈表方便很多,因為單鏈表指向是單向的,而雙鏈表有兩個引用域,乙個指向前乙個結點,另乙個指向下乙個結點。當然根節點只有指向下乙個節點的引用域,而尾結點只有指向前乙個的引用域。這樣的話查詢資料時就有兩種方法,一種是從前面開始查詢,一種就是從後面開始查詢。

下面附上我寫的雙鏈表的**:

結點類:

public class node 

public node getprior()

public void setprior(node prior)

public object getobj()

public void setobj(object obj)

public node getnext()

public void setnext(node next)

}

鍊錶類:

public class linkedlist  else 

size++;

} /**

* method of remove node

* * @param node

*/public object removenode(int index) else

if (index == size - 1) else

} size--;

return removenode;

} /**

* 按正序查詢指定索引位置的值

* * @param index

* @return

*/public object get(int index) else

return node.getobj();

} }/**

* 按倒序查詢指定索引位置的值

* * @param index

* @return

*/public object getreverse(int index) else

return node.getobj();

} }/**

* 返回鍊錶大小的方法

* * @return

*/public int size()

/*** 得到指定索引位置節點的方法

* * @param index

* @return

*/public node getnode(int index) else

return node;

} }}

當然,鍊錶的排序也和陣列不一樣,鍊錶排序時只需改變引用域的指向,但是涉及根節點和尾結點時,要變更根結點和尾結點(將新結點設定為根結點或尾結點)。下面附上雙鏈表的直接插入排序:

/**

* 建立insertsort類 內建直接插入排鍊表順序的方法 按正序排列

* @author administrator

* */

public class insertsort else if (j == list.size() - 1) else

}} }

}

備註:來自於360百科

鍊錶的使用

一 鍊錶的概念 在陣列列表的文章中我們已經提到了鍊錶,今天來講一下鍊錶。首先再回顧一下鍊錶列表與陣列列表的關係。鍊錶列表 鍊錶是一塊不連續的動態空間,長度可變 鍊錶需要按順序檢索節點,效率低 鍊錶的優點是可以快速插入和刪除節點,大小動態分配,長度不固定。鍊錶不存在越界問題。陣列列表 陣列是一塊連續的...

鍊錶的使用

定義鍊錶 定義節點型別struct node 給鍊錶節點分配記憶體空間 建立鍊錶node create int array return head 查詢節點int search node head,int x return count 插入節點void insert node l,int posit...

鍊錶的基本使用一(構建鍊錶)

因為有不少朋友向我詢問鍊錶的一些事情,他們都在問鍊錶指標啥的寫起來都好麻煩的,有啥用呢。作為乙隻萌新就 些我的一些感覺吧 我一開始的時候也是比較排斥鍊錶的,因為這玩意一開始接觸真的感到太麻煩了,它做到的很多東西,陣列也都可以,為啥還要用這麼麻煩的方式呢。後來上企業課的時候,開始模擬寫軟體,就是乙個比...