链表
链表 Node:节点 数据&next(指向当前节点的下一节点) 数据&next&prev(双向链表)
First:
Last:
Size;节点数
单向链表和双向链表
例.编写双向链表
public class MyLinked{
private Node first;//第一个节点
private Node last;//第二个节点
private int size;//节点数
private void addLast(Object ele){
Node node =new Node(ele);
if(size==0){//第一次添加
this.first = node;
this.last = node;
}
else{
//将新增节点作为之前最后一个节点的下一个节点
this.last.next = node;
//将新增节点的上一个节点指向之前最后一个节点
node.prev = this.last;
//将最后一个节点指向新增节点
this.last = node;
}
size++;
}
private void addFirst(Object ele){
Node node =new Node(ele);
if(size==0){//第一次添加
this.first = node;
this.last = node;
}
else{
//新增节点的下一个节点记录成之前的第一个节点
node.next = this.first;
//把之前第一个节点的上一个记录成新增节点
this.first.prev = node;
//将链表中第一个节点记录成新增节点
this.first = node;
}
size++;
}
private void remove(Object ele){
//判断要删除的数据是否在节点中存在
Node node = this.first;
for(int i = 0;i<size;i++){
if(!node.ele.equals(ele)){
if(node.next==null){
System.out.println("不存在");
return;
}
node = node.next;
}
}
if(node == this.first){
this.first = node.next;
this.first.perv = null;
}else if(node = this.last){
this.last = node.perv;
this.last.next = null;
}else{
node.perv.next = node.next;
node.last.perv = node.perv;
}
size--;
}
private boolean search(Object ele){
Node node = this.first;
for(int i = 0;i<size;i++){
if(!node.ele.equals(ele)){
if(node.next==null){
System.out.println("不存在");
return flase;;
}
node = node.next;
}
}
return true;
}
privatr String toString(){
if(size == 0){
return "[]";
}
StringBuffer stringBuffer = new StringBuffer();
Node node = this.first;
stringBuffer.append("[");
for(int i = 0;i<size;i++){
stringBUfffer.append(node.ele);
if(i!=size-1){
stringBuffer.append(",");
}
node = node.next
}
stringBuffer.append("]");
return stringBuffer.toString();
}
class Node{
Node next;//记录下一个节点
Node perv;//记录上一个节点
Object ele;//数据
public Node(Object ele){
this.ele = ele;
}
}
}
public class MyLinkedDemo{
Mylinked myLinked = new MyLinked();
myLinked.addFirst(100);
myLinked.addFirst(10);
myLinked.addLast(1000);
myLinked.remove(100);
System.out.println(myLinked.toString());
System.out.println(myLinked.search(10));
}