package helloclean.mylink;
public class Link {
public String dataStr;
public Link next;
public Link(String dataStr) {
this.dataStr = dataStr;
this.next = null;
}
public void disPlay() {
System.out.print(" {" + dataStr + "} ");
}
}
package helloclean.mylink;
/**
* 双端链表, 同时维护 first 和 last
*/
public class FirstLastLink {
private Link first;
private Link last;
public FirstLastLink() {
this.first = null;
this.last = null;
}
public boolean isEmpty() {
return (first == null);
}
public void insertFist(String key) {
Link newNode = new Link(key);
if(isEmpty()) {
this.last = newNode;
}
newNode.next = first;
first = newNode;
}
public void inserLast(String key) {
Link newNode = new Link(key);
if(isEmpty()) {
first = newNode;
} else {
last.next = newNode;
}
last = newNode;
}
public String deleteFirst() {
String temp = first.dataStr;
if(first.next == null) {
last = null;
}
first = first.next;
return temp;
}
public void disPlay() {
System.out.println("first -> last : ");
Link current = first;
while (current != null) {
current.disPlay();
current = current.next;
}
System.out.println();
}
}
package helloclean.mylink;
public class FirstLastApp {
public static void main(String[] args) {
FirstLastLink firstLastLink = new FirstLastLink();
firstLastLink.insertFist("1");
firstLastLink.insertFist("2");
firstLastLink.insertFist("3");
firstLastLink.disPlay();
firstLastLink.inserLast("4");
firstLastLink.inserLast("5");
firstLastLink.inserLast("6");
firstLastLink.disPlay();
firstLastLink.deleteFirst();
firstLastLink.deleteFirst();
firstLastLink.disPlay();
}
}