天天看點

單連結清單_JAVA描述《資料結構與算法分析》

節點

單連結清單_JAVA描述《資料結構與算法分析》

package DataStructures;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

class ListNode {

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    //Frientdly data;accessible by other package routines

單連結清單_JAVA描述《資料結構與算法分析》

    Object element;

單連結清單_JAVA描述《資料結構與算法分析》

    ListNode next;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    // Constructers

單連結清單_JAVA描述《資料結構與算法分析》

    ListNode(Object theElement) {

單連結清單_JAVA描述《資料結構與算法分析》

        this(theElement, null);

單連結清單_JAVA描述《資料結構與算法分析》

    }

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    ListNode(Object theElement, ListNode n) {

單連結清單_JAVA描述《資料結構與算法分析》

        element = theElement;

單連結清單_JAVA描述《資料結構與算法分析》

        next = n;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

}

單連結清單_JAVA描述《資料結構與算法分析》

疊代器

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

public class LinkedListItr {

單連結清單_JAVA描述《資料結構與算法分析》

    ListNode current; // Current position

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    LinkedListItr(ListNode theNode) {

單連結清單_JAVA描述《資料結構與算法分析》

        current = theNode;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public boolean IsPastEnd() {

單連結清單_JAVA描述《資料結構與算法分析》

        return current == null;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public Object Retrive() {

單連結清單_JAVA描述《資料結構與算法分析》

        return IsPastEnd() ? null : current.element;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public void Advance() {

單連結清單_JAVA描述《資料結構與算法分析》

        if (!IsPastEnd())

單連結清單_JAVA描述《資料結構與算法分析》

            current = current.next;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

連結清單類

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

public class LinkedList {

單連結清單_JAVA描述《資料結構與算法分析》

    private ListNode header;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public LinkedList() {

單連結清單_JAVA描述《資料結構與算法分析》

        header = new ListNode(null);

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public boolean IsEmpty() {

單連結清單_JAVA描述《資料結構與算法分析》

        return header.next == null;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public void makeEmpty() {

單連結清單_JAVA描述《資料結構與算法分析》

        header.next = null;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public LinkedListItr Zeroth() {

單連結清單_JAVA描述《資料結構與算法分析》

        return new LinkedListItr(header);

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public LinkedListItr First() {

單連結清單_JAVA描述《資料結構與算法分析》

        return new LinkedListItr(header.next);

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    /**

單連結清單_JAVA描述《資料結構與算法分析》

     * Return iterator corresponding to the first node containing an item.

單連結清單_JAVA描述《資料結構與算法分析》

     * 

單連結清單_JAVA描述《資料結構與算法分析》

     * @param x

單連結清單_JAVA描述《資料結構與算法分析》

     *            the item to search for.

單連結清單_JAVA描述《資料結構與算法分析》

     * @return an iterator; iterator IsPastEnd if item is not found.

單連結清單_JAVA描述《資料結構與算法分析》

     */

單連結清單_JAVA描述《資料結構與算法分析》

    public LinkedListItr Find(Object x) {

單連結清單_JAVA描述《資料結構與算法分析》

        ListNode itr = header.next;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

        while (itr != null && !itr.element.equals(x))

單連結清單_JAVA描述《資料結構與算法分析》

            itr = itr.next;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

        return new LinkedListItr(itr);

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

     * Remove th first occurrence of an item.

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

     *            the item to remove.

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public void Remove(Object x) {

單連結清單_JAVA描述《資料結構與算法分析》

        LinkedListItr p = FindPrevious(x);

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

        if (p.current.next != null)

單連結清單_JAVA描述《資料結構與算法分析》

            p.current.next = p.current.next.next; // Bypass deleted node

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

     * Return itreator prior to the first node containing an item.

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

     * @return appropriate iterator if the item is found.Otherwise, the iterator

單連結清單_JAVA描述《資料結構與算法分析》

     *         corresponding to the last element in the lis is returned.

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public LinkedListItr FindPrevious(Object x) {

單連結清單_JAVA描述《資料結構與算法分析》

        ListNode itr = header;

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

        while (itr.next != null && !itr.next.element.equals(x))

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

     * Insert after p.

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

     *            the item to insear.

單連結清單_JAVA描述《資料結構與算法分析》

     * @param p

單連結清單_JAVA描述《資料結構與算法分析》

     *            the position prior to the newly inserted item.

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    public void Insert(Object x, LinkedListItr p) {

單連結清單_JAVA描述《資料結構與算法分析》

        if (p != null && p.current != null)

單連結清單_JAVA描述《資料結構與算法分析》

            p.current.next = new ListNode(x, p.current.next);

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

    // Simple print method

單連結清單_JAVA描述《資料結構與算法分析》

    public static void PrintLinkedList(LinkedList theList) {

單連結清單_JAVA描述《資料結構與算法分析》

        if (theList.IsEmpty())

單連結清單_JAVA描述《資料結構與算法分析》

            System.out.print("Empty list");

單連結清單_JAVA描述《資料結構與算法分析》

        else {

單連結清單_JAVA描述《資料結構與算法分析》

            LinkedListItr itr = theList.First();

單連結清單_JAVA描述《資料結構與算法分析》

            for (; !itr.IsPastEnd(); itr.Advance())

單連結清單_JAVA描述《資料結構與算法分析》

                System.out.print(itr.Retrive() + " ");

單連結清單_JAVA描述《資料結構與算法分析》

        }

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

        System.out.println();

單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》
單連結清單_JAVA描述《資料結構與算法分析》

本文轉自冬冬部落格園部落格,原文連結:http://www.cnblogs.com/yuandong/archive/2006/08/19/481154.html,如需轉載請自行聯系原作者