package com.wck.test83;
/**
* @author kun
* @date 2021年8月3日
*/
public class DoublyLinkedList {
class Node{
Object item;
Node next;
Node prior;
}
Node head=new Node();
int size=0;
int flag=1;
Node temp;
public boolean isEmpty() {
return size == 0;
}
public int getSize() {
return size;
}
//插入方法
public void Insert(Object obj){
if(size==0){
head.item="";
head.prior=null;
head.next=null;
size=1;
} if(size==1){
Node newnode=new Node();
newnode.item=obj;
head.next=newnode;
newnode.prior=head;
newnode.next=null;
}if(size>1){
Node newnode=new Node();
newnode.item=obj;
head.next.prior=newnode;
newnode.next=head.next;
head.next=newnode;
newnode.prior=head;
}
size++;
}
//删除
public void delete(Object obj){
Node nodehead = head.next;
for(int i=0;i<size-1;i++){
if(nodehead.item.equals(obj)){
temp=nodehead;
}
nodehead = nodehead.next;
}
if(temp!=null){
temp.prior.next=temp.next;
temp.next.prior=temp.prior;
size--;
}if(temp==null){
System.out.println("没有元素"+obj);
}
}
//修改
public void update(Object obj,Object obj1) {
Node nodehead = head.next;
for(int i=0;i<size-1;i++){
if(nodehead.item.equals(obj)){
temp=nodehead;
}
nodehead = nodehead.next;
}
if(temp!=null){
temp.item=obj1;
}if(temp==null){
System.out.println("没有元素"+obj+"修改失败");
}
}
//查找根据内容查找位置
public void lookforpostion(Object obj) {
Node nodehead = head.next;
int count =0;
for(int i=0;i<size-1;i++){
if(nodehead.item.equals(obj)){
temp=nodehead;
System.out.println("元素"+"\""+obj+"\""+"在第"+(count+1)+"个位置");
}
nodehead = nodehead.next;
count++;
}
if(count==5){
System.out.println("该元素未找到!");
}
}
//根据位置查元素值
public void lookforcontent(int option){
Node nodehead = head.next;
Object content=null;
while(flag<=option){
content=nodehead.item;
nodehead = nodehead.next;
flag++;
}
System.out.println(content);
}
//遍历方法
public void prit(int size){
Node nodehead = head.next;
for(int i=0;i<size-1;i++){
System.out.print(nodehead.item+"\t");
nodehead = nodehead.next;
}
System.out.println();
}
}
实现类:
package com.wck.test83;
public class DoublyLinkedListTest {
public static void main(String[] args) {
DoublyLinkedList dLL=new DoublyLinkedList();
//添加
System.out.println("添加实现....");
dLL.Insert("aaa");
dLL.Insert("bbb");
dLL.Insert("ccc");
dLL.Insert("ddd");
dLL.Insert("eee");
int size=dLL.getSize();
dLL.prit(size);
System.out.println("---------------------");
//删除
System.out.println("删除元素eee实现.......");
dLL.delete("eee");
int size1=dLL.getSize();
dLL.prit(size1);
System.out.println("---------------------");
//修改
System.out.println("修改ddd为ddd1实现.........");
dLL.update("ddd", "ddd1");
int size2=dLL.getSize();
dLL.prit(size2);
System.out.println("---------------------");
//查找
System.out.println("查找bbb元素在哪个位置.......");
dLL.lookforpostion("bbb");
System.out.println("------------------");
//根据位置查元素值
dLL.lookforcontent(1);
}
}