JAVA 資料結構之雙向鍊錶

2021-09-10 10:18:34 字數 1830 閱讀 5193

啊,寫完了雙端之後,雙向就好寫多了,重點是改變結點的next指向的時候,一定要一起把previous改了,並且要注意可能在last結點處進行指向修改時存在的的null情況。

package linklist;

/* * 結點定義

*/class doublynode

public void display() }/*

* 寫乙個雙向鍊錶

*/public class doublylist

/** 從頭插入結點

*/public void insertfirst(object d) else

newnode.next = first;

first = newnode; }

/* * 從尾部插入結點

*/public void insertlast(object d) else

last = newnode; }

/**雙向鍊錶的插入操作注意點 :

* (1) 通用的:採用方法為定位到location-1處,所以第乙個位置的插入要單獨操作

* (2) 此次採用的方法是遍歷所有結點,找到對應位置後插入,返回。

* (3) 插入操作時,只需注意在尾部插入時last結點的變化,而不像刪除時還要考慮

* 插入第乙個結點時last的變化。

* (4) 當在尾部插入時,current.next為null,所以不需要改變其previous。

* (5) 改變next指向時,一定要同時改變previous指向。

*/public void insertloc(int loc, object d)

if(j == loc)

while(current != null) else

//這條語句已經將current的next指向改變了,所以不能將else後面的語句寫在它後面

current.next = newnode;

newnode.previous = current;

return;

}current = current.next;

j++;

} }/*

* 任意位置刪除

*/public void deleteloc(int loc)

if(j == loc)

//將current的值賦給first,first就把current的next,previous等等都繼承了

//所以要將first.previous改為null

first = current.next;

first.previous = null;

return;

} while(current.next != null) else

current.next = current.next.next;

return;

}current = current.next;

j++;

} }/*

* 從頭列印鍊錶

*/public void displayfirst()

system.out.println(); }

/* * 從尾部開始列印鍊錶

*/public void displaylast()

system.out.println(); }

public boolean isempty()

public int length()

return length; }

/* * 測試雙端鍊錶

*/public static void main(string args)

}

java資料結構 雙向鍊錶

鍊錶是非常常見的一類線性結構的資料結構,每個節點包含有指標域和資料域,常見的包括單項列表 雙向列表 迴圈列表。這篇文章將詳細介紹雙向鍊錶。本文將介紹雙向鍊錶的插入節點 根據位置插入節點 刪除頭結點 刪除尾節點 刪除指定位置節點,檢視鍊錶元素 檢視頭結點 檢視尾節點 檢視鍊錶長度 判斷鍊錶是否為空。鍊...

資料結構之雙向鍊錶

簡述 指標域有乙個指標 而言,占用資源更大,但相應的 雙向鍊錶遍歷的時候只需要乙個指標就可以,而且 只有得到其中任何乙個節點就是得到整個鍊錶,單向鍊錶必須得到他的頭節點,才能遍歷整個鍊錶,而且得有兩個指標。實現 bothwaylinklist.h ifndef mymodule h define m...

資料結構之 雙向鍊錶

單鏈表的結點都只有乙個指向下乙個結點的指標。單鏈表的資料元素無法直接訪問其前驅元素。建立鍊錶 銷毀鍊錶 獲取鍊錶長度 清空鍊錶 獲取第pos個元素操作 插入元素到位置pos 刪除位置pos處的元素 dlinklist dlinklist creat 建立乙個鍊錶 void dlinklist des...