鍊錶是非常常見的一類線性結構的資料結構,每個節點包含有指標域和資料域,常見的包括單項列表、雙向列表、迴圈列表。這篇文章將詳細介紹雙向鍊錶。
本文將介紹雙向鍊錶的插入節點、根據位置插入節點、刪除頭結點、刪除尾節點、刪除指定位置節點,檢視鍊錶元素、檢視頭結點、檢視尾節點、檢視鍊錶長度、判斷鍊錶是否為空。
鍊錶的節點表示:
class node
}
在建立好鍊錶節點之後下來看鍊錶的構造方法和成員變數,成員方法包括乙個完整鍊錶的頭結點、尾節點以及鍊錶的長度:
class doublelinkedlist
}
1、插入元素:尾部插入
/**
* 插入元素
*/public void insert(string value)
node node = new node(value);
if (headnode == null) else
length++;
}
2、插入元素:指定位置
/**
* 根據位置插入節點
*/public void insert(int position, string value)
if (position == 0) else
length++;
}
3、刪除元素:刪除頭部
/**
* 刪除鍊錶頭部
*/public node deletehead() else
if (nextnode == null) else
length--;
return firstnode;
}
4、刪除元素:刪除尾部
/**
* 刪除鍊錶尾部
*/public node deletetail() else
if (prenode == null) else
length--;
return lastnode;
}
5、刪除元素:刪除指定位置
/**
* 刪除指定位置節點
*/public node deletebyposition(int position) else else if (position == length - 1) else }}
6、根據位置獲取節點
/**
* 根據位置獲取節點
*/public node getnodebyposition(int position) else
if (current != null) }}
return current;
}
7、檢視所有節點
/**
* 列印所有節點
*/public void displayall()
}
8、檢視頭結點
/**
* 檢視頭結點
*/public node getheadnode()
9、檢視尾節點
/**
* 檢視當尾節點
*/public node gettailnode()
10、獲取鍊錶長度
/**
* 鍊錶長度
*/public int length()
11、判斷鍊錶是否為空
/**
* 判斷鍊錶是否為空
*/public boolean isempty()
資料結構 雙向鍊錶(一)(java)
之前學習了單向鍊錶,沒寫到單向迴圈鍊錶,這裡簡單學習記錄一下,單向非迴圈鍊錶的尾節點元素的next指向的是null,也就是沒有後繼節點,並且頭節點沒有前驅元素,就是一條鍊子,首尾不相連。而單向迴圈鍊錶就是頭節點的前驅元素就是尾節點,尾節點的後繼元素是頭節點,next就不是null了。迴圈鍊錶就是首尾...
JAVA 資料結構之雙向鍊錶
啊,寫完了雙端之後,雙向就好寫多了,重點是改變結點的next指向的時候,一定要一起把previous改了,並且要注意可能在last結點處進行指向修改時存在的的null情況。package linklist 結點定義 class doublynode public void display 寫乙個雙向...
資料結構 鍊錶 雙向鍊錶
注意typedef的定義結構,以及dinklist的資料型別 typedef struct dnode dnode,dinklist 注意插入第乙個結點時,prior指標的空指向問題 if l next null 若l後繼結點為空 則省略該步驟 l next prior p 基本 頭插法建立雙向鍊錶...