//创建自己的链表类
public class MylinkList {
private Node first;
private Node last;
private Integer size=0;
//在链表的最前面添加数据
public void addfirst(Object ele) {
Node courrent = new Node(ele);
if(size==0) {
this.first=courrent;
this.last =courrent;
}else {
courrent.Next=this.first;
this.first.prev=courrent;
this.first=courrent;
}
size++;
}
//在链表的最后面添加数据
public void addlast(Object ele) {
Node courrent = new Node(ele);
if(size==0) {
this.first=courrent;
this.last = courrent;
}else {
courrent.prev=this.last;
this.last.Next=courrent;
this.last=courrent;
}
size++;
}
//在链表中查找数据
public boolean check(Object ele) {
Node node= this.first;
for(int i=0;i<size;i++) {
if(node.ele.equals(ele)) {
return true;
}
node=node.Next;
}
return false;
}
//删除链表中的数据
public void delete(Object ele) {
Node node = this.first ;
for(int i=0;i<size;i++) {
if(node.ele.equals(ele)) {
if(node==this.first) {
this.first.Next.prev=null;
this.first=this.first.Next;
}else if(node==this.last) {
this.last.prev.Next=null;
this.last=this.last.prev;
}else {
node.Next.prev=node.prev;
node.prev.Next=node.Next;
}
size--;
}
node=node.Next;
}
}
//在链表中修改数据
public void change(Object oldele,Object newele) {
Node node = this.first ;
for(int i=0;i<size;i++) {
if(node.ele.equals(oldele)) {
node.ele=newele;
return;
}
node=node.Next;
}
System.out.println(oldele+"不存在链表中");
}
//链表的toString方法
public String toString() {
StringBuilder str = new StringBuilder(size*2+1);
if(size==0) {
str.append("[]");
}else {
Node node=this.first;
str.append("[");
for(int i=0;i<size;i++) {
if(i!=size-1) {
str.append(node.ele+",");
node=node.Next;
}else {
str.append(node.ele+"]");
}
}
}
return str.toString();
}
class Node{
Node prev;
Node Next;
Object ele;
Node(Object ele){
this.ele=ele;
}
}
}
双向链表的实现
最新推荐文章于 2021-12-15 13:22:12 发布