package com.doubleLinked;
public class Node{
int data;
Node prev;
Node next;
public Node(int data){
this.data = data;
this.prev = null; // 初始化不需要prev和next 指向谁
this.next = null;
}
}
//封装代码方法类
package com.doubleLinked;
public class DoubleLinkedClass {
Node head;
/**
* 给新的双向链表增加数据
* @param data
*/
public void addData(int data){
Node newNode = new Node(data);
if(head == null){
head = newNode;
}else {
Node temp = head;
while(temp.next != null){
temp = temp.next;
}
newNode.prev = temp;
temp.next = newNode;
return;
}
}
/**
* 在Node指定位置插入元素
* @param node
* @param data
*/
public void addIndex(Node node,int data){
if(node == null){
System.out.println("插入元素索引查找失败");
return;
}
Node newNode = new Node(data);
newNode.next = node.next;
newNode.prev = node;
if(node.next != null){
node.next.prev = newNode;
}
node.next = newNode ;
}
// 查找数据
public Node find(int data){
Node temp = head;
while(temp != null ){
if(temp.data == data){
return temp;
}
temp = temp.next;
}
return null;
}
// 删除某一元素
public void delDoubleLinked(int data){
Node temp = head;
while (temp != null){
if(temp.data == data){
if(temp.prev != null){
temp.prev.next = temp.next ;
}
else {
// 头结点改变,双链表是从头结点开始的,所以原先的head默认为空了,但实际是存在的。
head = temp.next;
}
if(temp.next != null){
temp.next.prev =temp.prev;
}
return;
}
temp = temp.next;
}
}
public void print(){
Node temp = head;
while (temp != null){
System.out.println(temp.data);
temp = temp.next;
}
}
}
//测试类
package com.doubleLinked;
public class DoubleLinkedTest {
public static void main(String[] args) {
DoubleLinkedClass douL = new DoubleLinkedClass();
douL.addData(11);
douL.addData(12);
douL.addData(13);
Node l = douL.find(13);
if(l != null){
System.out.println("找到了" + l.data);
}else {
System.out.println("无");
}
douL.addIndex(l,14);
// douL.delDoubleLinked(11)
douL.delDoubleLinked(12);
douL.print();
}
}
双链表的操作
最新推荐文章于 2024-08-06 10:22:43 发布