双链表java实现_双链表 Java实现数据结构
創建雙鏈表DoubleLinkedList,帶范型
public class DoubleLinkedList {
private Node head;
private Node tail;
private int size;
public DoubleLinkedList() {
head = null;
tail = null;
}
public void addNode(T data){
if(head == null){
head = new Node(data);
tail = head;
size++;
return;
}
Node node = ?new Node(data);
tail.next = node;
node.pre = tail;
tail = tail.next;//或者寫成 tail = node;
size++;
}
//正序打印
public void print(){
Node curNode = head;
while(curNode!=null){
System.out.print(curNode.data+" ");
curNode = curNode.next;
}
System.out.println();
}
//倒序打印
public void printRerverse(){
Node curNode = tail;
while(curNode!=null){
System.out.print(curNode.data+" ");
curNode = curNode.pre;
}
System.out.println();
}
/**
* 根據索引刪除一個值
* true or false
*/
public boolean deleteNode(int index){
if(index<0||index>size-1){
throw new RuntimeException("刪除異常");
}
if(index==0){//刪除頭結點
head = head.next;
head.pre = null;
size--;
return true;
}
int count = 1;
Node curNode = head;
while(count
curNode= curNode.next;
count++;
}
Node deleteNode = curNode.next;
curNode.next = deleteNode.next;
if(null==deleteNode.next){//表示刪除閃到了尾巴節點;
curNode.next = null;
tail = curNode;
}else{
deleteNode.next.pre = curNode;
}
deleteNode.next = null;
deleteNode.pre = null;
size--;
return true;
}
/**
* 插入一個值
*/
public void insertNode(int index,T data){
if(index<0||index>size-1){
throw new RuntimeException("插入新節點異常");
}
if(index==0){//插入頭結點
Node newNode = new Node(data);
newNode.pre = null;
newNode.next = head;
head.pre = newNode;
head = newNode;
size++;
return;
}
int count = 1;
Node curNode = head;
while(count
curNode = curNode.next;//修改引用指向,指向下個節點:
count++;
}
Node nextNode = curNode.next;
Node newNode = new Node(data);
newNode.next = nextNode;
nextNode.pre = newNode;
curNode.next = newNode;
newNode.pre = curNode;
size++;
}
}
總結
以上是生活随笔為你收集整理的双链表java实现_双链表 Java实现数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑肾豆的功效与作用、禁忌和食用方法
- 下一篇: java getclass 相等_Jav