鍊錶實現系列(一) 簡單鍊錶Java實現

2021-09-10 09:33:20 字數 2834 閱讀 5489

簡單鍊錶的原理在這裡就不贅述了,推薦一篇比較不錯的部落格:鍊錶原理

需要實現的操作包括:

在頭節點之前插入節點;

在尾節點之後插入節點;

刪除包含指定資料的節點;

刪除尾節點;

查詢包含指定資料的節點;

獲取鍊錶的長度;

輔助操作包括:

清空鍊錶;

判斷鍊錶是否為空。

下面是簡單鍊錶的實現

/**

* 注意:該鍊錶實現不適合用於儲存有重複元素的集合

*/public class singlelist

public singlenode(type data)

public singlenode(type data, singlenode next)

/*** data 的 get()和 set()方法

*/public type getdata()

public void setdata(type data)

/*** next 的 get()和 set()方法

*/public singlenode getnext()

public void setnext(singlenode next)

}private singlenode head;

private singlenode tail;

public singlelist()

public singlenode gethead()

public singlenode gettail()

/*** 從頭部新增節點

* @param data:新增的節點的資料

*/public void addnodebeforehead(type data)

}/**

* 從尾部新增節點

* @param data:新增的節點的資料

*/public void addnodeaftertail(type data) else

}/**

* 根據資料刪除節點

* @param data:需要刪除的節點的資料

* 注意:會將資料域與 data 相同的、最靠近煉表頭的那乙個節點刪除掉

* @return 刪除的節點 n

*/public singlenode removenodebydata(type data)

while (before.next != null)

before = current;

}return null;

}/**

* 刪除尾節點 tail

* @return 刪除掉的原來的尾節點 tail

*/public singlenode removetail()

//下乙個節點是尾節點

current.next = null;//設定當前節點的後繼節點為空

tail = current;//將當前節點設定為尾節點 tail

return oldtail;

}/**

* 根據資料查詢節點

* @param data :節點的資料

* @return :查詢到的節點

*    注意 :該方法只返回滿足要求的、離頭節點最近的節點

*/public singlenode findnodebydata(type data)

return null;

}/**

* 計算鍊錶長度

* @return 鍊錶的節點個數(即鍊錶長度)

*/public int getlistlength()

return count;

}/**

* 清空鍊錶

*/public void clear()

/*** 判斷鍊錶是否為空

* @return 鍊錶是否為空

*/public boolean isempty()

/*** 列印鍊錶中的資料,僅用於測試

*/public void display()

system.out.println("\n");

}}

下面是測試**

public class singletest 

public void run()

list.display();//列印鍊錶

testaddnodeafterhead(); //測試方法 addnodebeforehead()

testaddnodeaftertail(); //測試方法 addnodeaftertail()

testremovenodebydata(); //測試方法 removenodebydata()

testremovetail(); //測試方法 removetail()

testfindnodebydata(); //測試方法 findnodebydata()

testgetlistlength(); //測試方法 getlistlength()

}public void testaddnodeafterhead()

public void testaddnodeaftertail()

public void testremovenodebydata()

public void testremovetail()

public void testfindnodebydata()

list.display();

}public void testgetlistlength()

}

格式不夠好,還望多多包涵~/bq 

java實現簡單鍊錶

鍊錶是由乙個個節點連線起來的。首先鍊錶的node類 為 public class node public node int value public void display 其次是鍊錶類,注意點已經寫在注釋 附上 public class linklist intlength int n 1 no...

鍊錶 java實現雙向鍊錶

前面已經總結了單向鍊錶,有興趣的兄弟可以進我部落格看一下。大家對比就可以看出,實現同樣的功能單向鍊錶要比雙向鍊錶痛苦的多。所以呀不斷地總結前輩留下的東西,是社會進步的基礎呀。可以直接看linkedlist的原始碼,其就是個雙向鍊錶。一 雙向鍊錶的結構。1 首先節點的結構,其中包含本節點內容,同時需要...

鍊錶實現系列(二) 雙向鍊錶Java實現

雙向鍊錶原理見部落格 資料結構 雙向鍊錶簡單實現及圖示 注 我採用的是正規化實現,如需實現具體鍊錶,只需將type改為具體型別即可。實現的操作包括 在頭節點之前插入節點 在尾節點之後插入節點 刪除包含指定資料的節點 刪除尾節點 查詢包含指定資料的節點 獲取鍊錶的長度 輔助操作包括 清空鍊錶 判斷鍊錶...