天天看点

单链表_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,如需转载请自行联系原作者