第一:鏈表是和隊列有些相同,都是方便查找數據的。但是鏈表沒有一個索引,在創建鏈表的時候我們的思想是:首先我們有一個類,但是這個僅僅是一個類,我們需要一連串的,於是我們就需要用這個類來生成對象,不斷的向下生成。但是鏈表裏必須存在着數據,我們得得到數據。private Object userNode;
private LinkNode child;
private LinkNode parent;
public LinkNode(Object userNode){
this.userNode=userNode;
}
public Object getUserNode() {
return userNode;
}
public void setUserNode(Object userNode) {
this.userNode = userNode;
}
public LinkNode getChild() {
return child;
}
public void setChild(LinkNode child) {
this.child = child;
}
public LinkNode getParent() {
return parent;
}
public void setParent(LinkNode parent) {
this.parent = parent;
}
其實我們大可不必要去這樣,我們也可以將私有的設置爲共有的就可以啊。這樣我們就可以生成很多相同的類,由上到下生成的一個鏈表。每一個節點有父節點,子節點,每一個節點都有自己的數據,這是生成鏈表的思想。
第二:當我們生成鏈表時我們就存在幾個問題:怎樣向鏈表裏添加新的,怎樣刪除指定位置的鏈表這裏的關鍵問題是我們怎樣得到當前的節點:
LinkNode node = front;
while (num != index) {
node = node.getChild();
num++;//不斷取出比較撒
}這個關鍵是:我們由上到下一直取到當前的節點,
1:向指定位置添加節點:(1)取到當前的節點,設置一個新的節點,在取出父節點,子節點,
(2)設置新的引用關係:新的節點的父節點爲原來的父節點,原來父節點的子節點爲新的節點,原來的節點父節點爲新節點,原來的子節點不變。
事例代碼:
LinkNode newnode = new LinkNode(obj);
// 得到當前索引位置的節點
LinkNode node = this.getLinkNode(index)
LinkNode fNode = node.getParent();
// 設置新的引用關係
fNode.setChild(newnode);
newnode.setParent(fNode);
newnode.setChild(node);
node.setParent(newnode);
如此我們就插入了新的節點,至於刪除節點則是相同的思路;