java单链表 提供增删改查_java实现单链表增删改查的实例代码详解
package 數據結構算法.鏈表;
/*
*定義節點
* 鏈表由節點構成
*/
public class node {
private e e; //數據data
private node next; //指向下一個節點
public node() {
}
public node(e e) {
this.e = e;
}
public node getnext() {
return next;
}
public void setnext(node next) {
this.next = next;
}
public e gete() {
return e;
}
public void sete(e e) {
this.e = e;
}
}
package 數據結構算法.鏈表;
/*
* 定義實現類mylinkedlist
* 實現鏈表的基本功能:增刪改查
*/
public class mylinkedlist {
//聲明頭節點尾節點
private node head;
private node last;
//鏈表的大小
private int size;
private int modcount; //計算被修改的次數
public mylinkedlist() {
head = new node();//實例化頭結點
last = head;
}
/*
*返回單鏈表中存儲的元素總數
*/
public int size() {
return size;
}
/*
*獲取指定索引位置的節點對象
*/
public node get(int index) {
if (index < 0 || index > size - 1)
return null;
node node = head.getnext();//將頭結點的下一個節點賦給node
for (int i = 0; i < index; i++) {
node = node.getnext();//獲取node的下一個節點
}
return node;
}
/*
*獲取指定索引位置的數據
*/
public e getvalue(int index) {
if (index < 0 || index > size - 1)
return null;
node node = get(index);
return node.gete();
}
/*
*增加元素
*/
public void add(e e) {
node node = new node(e); //以e實例化一個節點
last.setnext(node);//往尾節點后追加節點
last = node;//該節點設為最后一個節點
size++;
modcount++;
}
/*
*指定位置插入元素,返回插入的節點數據
*/
public e add(int index, e e) {
if (index < 0 || index > size - 1)
return null;
node node = new node(e); //實例化一個節點
//找到插入的原節點
node oldnode = get(index);
if (index == 0) {//當索引為0時
head.setnext(node);
} else {
//找到插入節點的上一個
node bnode = get(index - 1);
bnode.setnext(node);
}
node.setnext(oldnode);
size++;
modcount++;
return oldnode.gete();
}
/*
*刪除指定的節點e,并返回刪除節點的數據
*/
public e delete(int index) {
if (index < 0 || index > size - 1)
return null;
if (index == 0) {//當索引為1,令頭結點的下一個節點為頭結點
node node = head.getnext();
head.setnext(node.getnext());
}
//獲取要刪除節點的前一個節點
node bnode = get(index - 1);
//獲取要刪除的節點
node node = bnode.getnext();
//獲取要刪除節點的下一個節點
node nnode = node.getnext();
//刪除該節點
bnode.setnext(nnode);
//清除node的下一個節點
node.setnext(null);
size--;
modcount++;
return node.gete();//返回節點中的數據域
}
/*
*修改指定位置的數據域并返回修改后的數據
*/
public e set(int index, e e) {
if (index < 0 || index > size - 1)
return null;
//獲取指定位置的原節點
node node = get(index);
node.sete(e);
modcount++;
return node.gete();
}
}
package 數據結構算法.鏈表;
/*
*定義測試類
*/
public class mylinkedlisttest {
public static void main(string[] args) {
mylinkedlist list = new mylinkedlist<>();
//測試add
list.add("one");
list.add("two");
list.add("three");
list.add("four");
list.add(0,"newone");
list.add(1,"newtwo");
for (int i = 0; i < list.size(); i++) {
system.out.print(list.getvalue(i)+" ");
}
//測試set
system.out.println();
list.set(0, "111");
list.set(1, "222");
system.out.println(list.getvalue(0) + " " + list.getvalue(1));
//測試delete
system.out.println();
list.delete(1);
for (int i = 0; i < list.size(); i++) {
system.out.print(list.getvalue(i)+" ");
}
}
}
運行結果如下:
以上就是全部知識點內容,感謝大家對萬仟網的支持。
希望與廣大網友互動??
點此進行留言吧!
總結
以上是生活随笔為你收集整理的java单链表 提供增删改查_java实现单链表增删改查的实例代码详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冰墩墩和雪容融的含义和来历(两者的由来和
- 下一篇: java接口安全怎么处理_Restful