1.实现双向链表
public class TwoWayLink {
private Node head;
private Node tail;
private int size;
private class Node{
private Node previous;
private Node next;
private Object data;
public Node(Object data) {
this.data = data;
}
}
public void addHead(Object data) {
Node node = new Node(data);
if(size==0) {
head = node;
tail = node;
}else {
head.previous = node;
node.next = head;
head = node;
}
size++;
}
public void addTail(Object data) {
Node node = new Node(data);
if(size==0) {
head = node;
tail = node;
}else {
node.previous = tail;
tail.next = node;
tail = node;
}
size++;
}
public void deleteHead() {
if(size==0) {
throw new IndexOutOfBoundsException();
}else if(head.next==null) {
head = null;
tail = null;
}else {
head = head.next;
head.previous = null;
}
size--;
}
public void deleteTail() {
if(size==0) {
throw new IndexOutOfBoundsException();
}else if(tail==head) {
head = null;
tail = null;
}else {
tail = tail.previous;
tail.next = null;
}
size--;
}
public void display() {
if(size==0) {
System.out.println("[]");
}else if(head==tail) {
System.out.println("["+head.data+"]");
}else {
Node node = head;
int tempSize=size;
while(tempSize>0) {
if(node==head) {
System.out.print("["+node.data+"->");
}else if(node.next==null) {
System.out.print(node.data+"]");
}else {
System.out.print(node.data+"->");
}
node = node.next;
tempSize--;
}
System.out.println();
}
}
public void displayRefuse() {
if(size==0) {
System.out.println("[]");
}else if(head==tail) {
System.out.println("["+head.data+"]");
}else {
Node node = tail;
int tempSize=size;
while(tempSize>0) {
if(node==tail) {
System.out.print("["+node.data+"->");
}else if(node.previous==null) {
System.out.print(node.data+"]");
}else {
System.out.print(node.data+"->");
}
node = node.previous;
tempSize--;
}
System.out.println();
}
}
}
2.使用
public class TestTwoWayLink {
public static void main(String[] args) {
TwoWayLink twLink = new TwoWayLink();
//twLink.display();
twLink.addHead("a");
//twLink.display();
twLink.addHead("b");
//twLink.display();
twLink.addTail("c");
//twLink.display();
twLink.addTail("d");
//twLink.display();
//twLink.deleteHead();
//twLink.display();
//twLink.deleteTail();
twLink.display();
twLink.displayRefuse();
}
}
文章评论