自定義鍊錶

2021-08-26 01:57:34 字數 2812 閱讀 1469

鍊錶是非連續、無順序的資料結構,鍊錶中元素與元素之間的記憶體位址沒有順序關係。鍊錶由乙個個結點組成,結點中儲存兩類資訊,第一類是儲存入結點的資料,第二類是結點的指向。鍊錶分為單項鍊表,雙向鍊錶,環形鍊錶,單項鍊表中只有乙個結點指向,指向的的下乙個結點的記憶體位址,只能單向移動,單項操作;雙向鍊錶有兩個結點指向,乙個指向上乙個結點的記憶體位址(父結點),另乙個指向下乙個結點的記憶體位址(子結點),可以雙向運動,雙向操作;環形鍊錶其實是雙向鍊錶的首位結點相連。

對於鍊錶,其好處是可以避免浪費記憶體空間,節省記憶體資源,不想陣列定長會不可避免的浪費記憶體空間,不可以連續讀取,連續操作,但是其大小可以動態改變。

/**

* 雙向列表結點類

* @author lenovo

* */

public class linknode

public linknode()

public object getobj()

public void setobj(object obj)

public linknode getchild()

public void setchild(linknode child)

public linknode getparent()

public void setparent(linknode parent)

}

/**

* 實現雙向鍊錶的方法類

* * @author lenovo

* */

public class linklist

//// list.set("***", 8);

//// // 根據索引插入結點

// // list.add("插入的", 8);

//

// list.add("新來的元素");

// list.add("新來的元素2");

//// // 根據索引刪除結點

// list.remove("新來的元素");

//// // 清空鍊錶

// list.clear();

//// // 列印鍊錶

// list.printlist(head);

//// // 得到鍊錶的長度

// int len = list.size();

// system.out.println("長度:" + len);

//// linknode temp = list.get(1); // 根據索引得到結點並列印

// list.printlist(temp);

//// }

/*** 新增元素的方法

* * @param obj

* :新增的元素

*/public void add(object obj) else

} /**

* 插入元素的方法

* * @param obj

* :插入的元素

* @param index

* :要插入的索引

*/public void add(object obj, int index) else else if (index > 0 && index < size())

linknode m = n.getparent();

// 設定新的關係

m.setchild(root);

root.setparent(m);

root.setchild(n);

n.setparent(root);

} else if (index == size())

} }/**

* 根據索引得到結點

* * @param index

* :索引

* @return

*/public linknode get(int index) else

return root;

} }/**

* 根據索引刪除結點

* * @param index

*/public void remove(int index) else else if (croot == null) else

} }/**

* 根據元素刪除結點

* * @param obj

*/public void remove(object obj)

if (head.getobj() == obj) else if (foot.getobj() == obj) else

root = root.getchild();

}} }

/*** 替換鍊錶上相應索引結點的方法

* * @param obj

* @param index

*/public void set(object obj, int index)

remove(index);

add(obj, index);

} /**

* 統計鍊錶長度的方法

* * @return

*/public int size()

return count;

} /**

* 清空鍊錶的方法

*/public void clear()

/*** 遍歷列表

* * @param root

*/public void printlist(linknode root)

} }}

自定義鍊錶

author qcg version 2019 5 6.description 自定義鍊錶 頭尾部的兩步操作 1.插入節點 next指向node 2.變更節點 last指標後移 node.next insertnode 這是插入元素的操作 public class mylinkedlist node...

自定義鍊錶

大多數人使用鍊錶都是看了一遍懵懵懂懂的,想要真正學習的人建議潛下心來自定義乙個鍊錶試試,自己搭建高樓大廈和看別人搭建是兩碼事,在自定義的過程中會明白自己建立的美妙感覺 public class node public node node privious,node next,object eleme...

C 自定義鍊錶

c 中的鍊錶結構在程式中十分常見,用處很廣。鍊錶結構中,每個節點由值部分和指標部分組成,值部分即儲存的資料,指標指向下乙個節點,從而使得每個節點能夠連線起來,值和指標就像骨骼和關節一樣。自定義鍊錶,首先定義出節點的結構,用類表示為 public class node定義完節點,下面開始構造list鍊...