1. 节点
/**
* 链接点 ,相当于是车厢
*/
public class Node {
public long data;
public Node next;
public Node previous;
public Node (long value){
this .data = value;
}
/**
* 显示方法
*/
public void display (){
System.out.println(data +" " );
}
}
2. 链表
public class FirstLastLinkList {
public Node first;
public Node last;
public FirstLastLinkList () {
this .first = null ;
this .last = null ;
}
/**
* 判断链表是否为空
*/
public boolean isEmpty () {
return first == null ;
}
public void addFirstNode (long data) {
Node node = new Node(data);
if (isEmpty()) {
last = node;
}
node.next = first;
first = node;
}
/**
* 尾部 插入
*/
public void addLastNode (long data) {
Node node = new Node(data);
int pos = 0 ;
if (isEmpty()) {
first = node;
}else {
last.next = node;
}
last = node;
}
/**
* 删除一个头结点,并返回头结点
*/
public Node deleteFirstNode () {
Node temp = first;
if (!isEmpty()){
first = temp.next;
}
return temp;
}
/**
* 通过数据删除结点
*/
public Node deleteDyData (int data) {
Node current = first;
Node previous = first;
while (current.data != data) {
if (current.next == null ) {
return null ;
}
previous = current;
current = current.next;
}
if (current == first) {
first = current.next;
} else if (current == last){
last = previous;
previous.next = null ;
}else {
previous.next = current.next;
}
return current;
}
/**
* 显示出所有结点信息
*/
public void displayNodes () {
Node current = first;
while (current != null ) {
current.display();
current = current.next;
}
}
/**
* 通过位置查找结点信息
*/
public Node findByPos (int index) {
Node current = first;
int pos = 0 ;
if (pos != index) {
current = current.next;
pos++;
}
return current;
}
/**
* 根据数据查找节点信息
*/
public Node findByData (int data) {
Node current = first;
while (current.data != data) {
if (current.next == null )
return null ;
current = current.next;
}
return current;
}
}