鍊錶是非連續、無順序的資料結構,鍊錶中元素與元素之間的記憶體位址沒有順序關係。鍊錶由乙個個結點組成,結點中儲存兩類資訊,第一類是儲存入結點的資料,第二類是結點的指向。鍊錶分為單項鍊表,雙向鍊錶,環形鍊錶,單項鍊表中只有乙個結點指向,指向的的下乙個結點的記憶體位址,只能單向移動,單項操作;雙向鍊錶有兩個結點指向,乙個指向上乙個結點的記憶體位址(父結點),另乙個指向下乙個結點的記憶體位址(子結點),可以雙向運動,雙向操作;環形鍊錶其實是雙向鍊錶的首位結點相連。
對於鍊錶,其好處是可以避免浪費記憶體空間,節省記憶體資源,不想陣列定長會不可避免的浪費記憶體空間,不可以連續讀取,連續操作,但是其大小可以動態改變。
/**
* 雙向列表結點類
* @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鍊...