java 实现双端链表(同时包含头节点和尾节点的引用)

拜拜、爱过 提交于 2019-11-30 14:47:45
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();

    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!