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 LinkQueue {
private FirstLastLink firstLastLink;
public LinkQueue() {
firstLastLink = new FirstLastLink();
}
public boolean isEmpty() {
return this.firstLastLink.isEmpty();
}
public void insert(String key) {
this.firstLastLink.inserLast(key);
}
public String remove() {
return this.firstLastLink.deleteFirst();
}
public void disPlayQueue() {
System.out.println("front -> rear : ");
this.firstLastLink.disPlay();
}
}
package helloclean.mylink;
public class LinkQueueApp {
public static void main(String[] args) {
LinkQueue linkQueue = new LinkQueue();
linkQueue.insert("1");
linkQueue.insert("2");
linkQueue.disPlayQueue();
linkQueue.insert("3");
linkQueue.insert("4");
linkQueue.disPlayQueue();
linkQueue.remove();
linkQueue.remove();
linkQueue.disPlayQueue();
}
}
文章来源: www.oschina.net,作者:clean123,版权归原作者所有,如需转载,请联系作者。
原文链接:https://my.oschina.net/u/4118445/blog/3112038