java链表需要自己编写么_基于java的链表基础操作
鏈表結構是由一個或一個以上再內存上不連續存儲的元素結點連接而成的數據結構,鏈表的每個結點都有兩個部分,一個部分是存儲的數據,另一部分是指向下一結點的指針,既是下一節點的引用。
首先鏈表一定有一個頭結點,它是鏈表的第一個結點,他是鏈表的第一個結點,該結點的引用部分指向下一節點,下一結點引用部分指向下下一結點 。。。。直到最后一個結點,最后一個結點引用部分為空,標志著鏈表的結束,整個存儲形式呈一個長鏈狀
鏈表的基礎操作分為 追加結點 遍歷結點 刪除結點 插入結點等
首先是鏈表結點類
public class LinearList {
//鏈表數據部分
int i;
//鏈表指針,既是鏈表對下一節點的引用
LinearList nextNode;
}
追加結點
/**
* 鏈表末尾追加節點
* @param head (頭節點)
* @param i (追加節點的值)
* @return
*/
static int add(LinearList head,int i){
//判斷頭節點有沒有初始化
if(head == null){
return 0;
}
//保存頭節點引用
LinearList temp = head;
//實例化追加節點,保存最佳節點數據
LinearList addNode = new LinearList();
addNode.i = i;
addNode.nextNode = null;
/**
* 循環至鏈表最后一個節點
*/
while(temp.nextNode!=null){
temp = temp.nextNode;
}
//鏈表最后一個節點的指針指向追加的節點
temp.nextNode = addNode;
return 1;
}
遍歷結點
/**
* 遍歷鏈表的所有結點
* @param head
*/
static void printNode(LinearList head){
if (head == null){
return;
}
while(head != null){
System.out.println("正在遍歷:"+head.i);
//該結點操作完成,指針下移到下一節點
head = head.nextNode;
}
}
刪除結點
/**
* 刪除指定節點
* 首先循環移動指針查找到要刪除的結點
* 再通過指針互換使要刪除節點移出鏈表
* 返回值為頭節點
* 刪除頭節點則返回新的頭節點
*
*
* @param head
* @param delKey
* @return head
*/
static LinearList delete(LinearList head,int delKey){
LinearList node = null;
LinearList temp = null;
/**
* 如果要刪除的是頭節點
* 則返回刪除后新的頭節點
*
*/
if(head.i == delKey){
temp = head.nextNode;
head.nextNode = null;
return temp;
}
temp = head.nextNode;
while (temp != null){
if(temp.nextNode.i == delKey){
node = temp.nextNode.nextNode;
temp.nextNode = node;
return head;
}else{
temp = temp.nextNode;
}
}
return null;
}
插入結點
/**
* 在鏈表指定位置插入節點
* insertKey 插入節點的數據
* upperNodeKey 引用插入節點的元素的數據
*
* 通過find 方法返回鏈表中的插入位置的上一節點
* 改變插入節點的指針指向插入節點
* 插入節點的指針指向插入位置的下一節點
*
* @param head
* @param inserKey
* @param upperNodeKey
* @return
*/
static int insert(LinearList head,int inserKey,int upperNodeKey ){
//判斷頭節點有沒有初始化
if(head == null){
return 0;
}
//保存查找節點的結果
LinearList temp = find(head,upperNodeKey);
//保存temp 對下一節點的引用
LinearList temp1 = null;
//即將插入的新節點
LinearList insertNode = new LinearList();
insertNode.i = inserKey;
if (temp == null){
return 0;
}else{
//指針互換
temp1 = temp.nextNode;
temp.nextNode = insertNode;
insertNode.nextNode = temp1;
return 1;
}
}
總結
以上是生活随笔為你收集整理的java链表需要自己编写么_基于java的链表基础操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java soap封装_Java SOA
- 下一篇: java追加一个sheet_(二)POI