private
class node
public
node(e e)
public
node()
@override
public string tostring()
}
需要size記錄擁有的元素個數
public
class linkedlist
/*******增*******/
// 這因為,頭結點和中間結點有差異,所以需要分別討論。此處可以優化
public
void
add(int index, e e)
//當不為頭結點時,建立結點指標prev從頭結點開始遍歷到指定index位置
node prev = dummyhead;
for(int i = 0;i1;i++)
//在此處插入節點
prev.next = new node(e,prev.next);
//size++
size++;
}public
void
addfirst(e e)
public
void
addlast(e e)
/*********查*******/
//獲取鍊錶中的元素個數
public
intgetsize()
//返回鍊錶是否為空
public boolean isempty()
public e get(int index)
node cur = dummyhead.next;
for (int i = 0; i < index; i++)
return cur.e;
}//獲得鍊錶的第乙個元素
public e getfirst()
//獲得鍊錶的最後乙個元素
public e getlast()
/******改******/
public
void
set(int index,e e)
//從頭結點,開始遍歷
node cur = dummyhead.next;
for(int i = 0;i/*****************刪******************/
public e remove(int index)
//建立結點引用prev,遍歷到要刪除節點的頭乙個節點
node prev = dummyhead;
for(int i = 0;i//建立刪除結點引用delnode,prev.next
node delnode = prev.next
//prev的下乙個結點跳過刪除結點,指向下下個結點
prev.next = prev.next.next;
//將要刪除的結點的引用賦值為null
delnode = null;
size -- ;
//返回刪除結點的資料域
return delnode.e;
}public e removefirst()
public e removelast()
}
這樣操作就可以不用考慮第乙個結點,和中間結點的區別。
因為在第乙個結點之前加了乙個dummynode結點,所有需要操作的結點都是中間結點,
java資料結構之鍊錶
1,節點說明 package pku.ss.datastructure.linkedlist public class listnode listnode object theelement,listnode n object element 節點中的元素 listnode next 指向下乙個節點...
Java資料結構之鍊錶反轉
思路很簡單,定義乙個類,這個類分成2塊,一塊是表示自身的標誌,另外乙個儲存指向下乙個元素的引用。通過互換相鄰兩個節點的引用來達到鍊錶反轉的效果。上 package com.withiter.test public class reverselist public static node add st...
JAVA 資料結構之雙向鍊錶
啊,寫完了雙端之後,雙向就好寫多了,重點是改變結點的next指向的時候,一定要一起把previous改了,並且要注意可能在last結點處進行指向修改時存在的的null情況。package linklist 結點定義 class doublynode public void display 寫乙個雙向...