且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

线性表的游标实现_JAVA描述《数据结构与算法分析》

更新时间:2022-08-25 10:03:41

结点类
线性表的游标实现_JAVA描述《数据结构与算法分析》package DataStructures;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》class CursorNode {
线性表的游标实现_JAVA描述《数据结构与算法分析》    // Friently data;accessible by other package routines
线性表的游标实现_JAVA描述《数据结构与算法分析》
    Object element;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    int next;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    // Constructers
线性表的游标实现_JAVA描述《数据结构与算法分析》
    CursorNode(Object theElement) {
线性表的游标实现_JAVA描述《数据结构与算法分析》        this(theElement, 0);
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    CursorNode(Object theElement, int n) {
线性表的游标实现_JAVA描述《数据结构与算法分析》        element = theElement;
线性表的游标实现_JAVA描述《数据结构与算法分析》        next = n;
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》}

线性表的游标实现_JAVA描述《数据结构与算法分析》

迭代器
线性表的游标实现_JAVA描述《数据结构与算法分析》package DataStructures;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》public class CursorListItr {
线性表的游标实现_JAVA描述《数据结构与算法分析》    int current; // Current position
线性表的游标实现_JAVA描述《数据结构与算法分析》

线性表的游标实现_JAVA描述《数据结构与算法分析》    CursorListItr(int theNode) {
线性表的游标实现_JAVA描述《数据结构与算法分析》        current = theNode;
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    public boolean IsPastEnd() {
线性表的游标实现_JAVA描述《数据结构与算法分析》        return current == 0;
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    public Object Retrieve() {
线性表的游标实现_JAVA描述《数据结构与算法分析》        return IsPastEnd() ? null : CursorList.cursorSpace[current].element;
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    public void Advance() {
线性表的游标实现_JAVA描述《数据结构与算法分析》        if (!IsPastEnd()) {
线性表的游标实现_JAVA描述《数据结构与算法分析》            current = CursorList.cursorSpace[current].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》        }

线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》}

线性表的游标实现_JAVA描述《数据结构与算法分析》

主类
线性表的游标实现_JAVA描述《数据结构与算法分析》package DataStructures;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》public class CursorList {
线性表的游标实现_JAVA描述《数据结构与算法分析》    private int header;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    static CursorNode[] cursorSpace;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    private static final int SPACE_SIZE = 100;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    static {
线性表的游标实现_JAVA描述《数据结构与算法分析》        cursorSpace = new CursorNode[SPACE_SIZE];
线性表的游标实现_JAVA描述《数据结构与算法分析》        for (int i = 0; i < SPACE_SIZE; i++) {
线性表的游标实现_JAVA描述《数据结构与算法分析》            cursorSpace[i] = new CursorNode(null, i + 1);
线性表的游标实现_JAVA描述《数据结构与算法分析》        }

线性表的游标实现_JAVA描述《数据结构与算法分析》        cursorSpace[SPACE_SIZE - 1].next = 0;
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    private static int alloc() {
线性表的游标实现_JAVA描述《数据结构与算法分析》        int p = cursorSpace[0].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》        cursorSpace[0].next = cursorSpace[p].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》        if (p == 0)
线性表的游标实现_JAVA描述《数据结构与算法分析》            throw new OutOfMemoryError();
线性表的游标实现_JAVA描述《数据结构与算法分析》        return p;
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    private static void free(int p) {
线性表的游标实现_JAVA描述《数据结构与算法分析》        cursorSpace[p].element = null;
线性表的游标实现_JAVA描述《数据结构与算法分析》        cursorSpace[p].next = cursorSpace[0].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》        cursorSpace[0].next = p;
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    public CursorList() {
线性表的游标实现_JAVA描述《数据结构与算法分析》        header = alloc();
线性表的游标实现_JAVA描述《数据结构与算法分析》        cursorSpace[header].next = 0;
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    public boolean IsEmpty() {
线性表的游标实现_JAVA描述《数据结构与算法分析》        return cursorSpace[header].next == 0;
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    /**
线性表的游标实现_JAVA描述《数据结构与算法分析》     * Make the list logically empty.
线性表的游标实现_JAVA描述《数据结构与算法分析》     
*/

线性表的游标实现_JAVA描述《数据结构与算法分析》    public void MakeEmpty() {
线性表的游标实现_JAVA描述《数据结构与算法分析》        while (!IsEmpty())
线性表的游标实现_JAVA描述《数据结构与算法分析》            Remove(First().Retrieve());
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    public CursorListItr Zeroth() {
线性表的游标实现_JAVA描述《数据结构与算法分析》        return new CursorListItr(header);
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    public CursorListItr First() {
线性表的游标实现_JAVA描述《数据结构与算法分析》        return new CursorListItr(cursorSpace[header].next);
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    /**
线性表的游标实现_JAVA描述《数据结构与算法分析》     * Return iterator corresponding to the first node containing an tiem.
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
@param x
线性表的游标实现_JAVA描述《数据结构与算法分析》     *            the item to search for
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
@return an iterator;iterator IsPastEnd if item is not found.
线性表的游标实现_JAVA描述《数据结构与算法分析》     
*/

线性表的游标实现_JAVA描述《数据结构与算法分析》    public CursorListItr Find(Object x) {
线性表的游标实现_JAVA描述《数据结构与算法分析》        int itr = cursorSpace[header].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》        while (itr != 0 && cursorSpace[itr].element.equals(x))
线性表的游标实现_JAVA描述《数据结构与算法分析》            itr = cursorSpace[itr].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》        return new CursorListItr(itr);
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    /**
线性表的游标实现_JAVA描述《数据结构与算法分析》     * Insert after p.
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
@param x
线性表的游标实现_JAVA描述《数据结构与算法分析》     *            the item to insert.
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
@param p
线性表的游标实现_JAVA描述《数据结构与算法分析》     *            the position prior to the newly inserted item.
线性表的游标实现_JAVA描述《数据结构与算法分析》     
*/

线性表的游标实现_JAVA描述《数据结构与算法分析》    public void Insert(Object x, CursorListItr p) {
线性表的游标实现_JAVA描述《数据结构与算法分析》        if (p != null && p.current != 0) {
线性表的游标实现_JAVA描述《数据结构与算法分析》            int pos = p.current;
线性表的游标实现_JAVA描述《数据结构与算法分析》            int tmp = alloc();
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》            cursorSpace[tmp].element = x;
线性表的游标实现_JAVA描述《数据结构与算法分析》            cursorSpace[tmp].next = cursorSpace[pos].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》            cursorSpace[pos].next = tmp;
线性表的游标实现_JAVA描述《数据结构与算法分析》        }

线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    /**
线性表的游标实现_JAVA描述《数据结构与算法分析》     * Remove the first occurence of an item.
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
@param x
线性表的游标实现_JAVA描述《数据结构与算法分析》     *            the item to remove.
线性表的游标实现_JAVA描述《数据结构与算法分析》     
*/

线性表的游标实现_JAVA描述《数据结构与算法分析》    public void Remove(Object x) {
线性表的游标实现_JAVA描述《数据结构与算法分析》        CursorListItr p = FindPrevious(x);
线性表的游标实现_JAVA描述《数据结构与算法分析》        int pos = p.current;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》        if (cursorSpace[pos].next != 0) {
线性表的游标实现_JAVA描述《数据结构与算法分析》            int tmp = cursorSpace[pos].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》            cursorSpace[pos].next = cursorSpace[tmp].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》            free(tmp);
线性表的游标实现_JAVA描述《数据结构与算法分析》        }

线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》    /**
线性表的游标实现_JAVA描述《数据结构与算法分析》     * Return iterator prior to the first node containing an item.
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
@param x
线性表的游标实现_JAVA描述《数据结构与算法分析》     *            the item to search for.
线性表的游标实现_JAVA描述《数据结构与算法分析》     * 
@return appropriate iterator if the item is found. Otherwise, the
线性表的游标实现_JAVA描述《数据结构与算法分析》     *         iterator corresponding to the last element in the list is
线性表的游标实现_JAVA描述《数据结构与算法分析》     *         returned.
线性表的游标实现_JAVA描述《数据结构与算法分析》     
*/

线性表的游标实现_JAVA描述《数据结构与算法分析》    public CursorListItr FindPrevious(Object x) {
线性表的游标实现_JAVA描述《数据结构与算法分析》        int itr = header;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》        while (cursorSpace[itr].next != 0
线性表的游标实现_JAVA描述《数据结构与算法分析》                && !cursorSpace[cursorSpace[itr].next].element.equals(x))
线性表的游标实现_JAVA描述《数据结构与算法分析》            itr = cursorSpace[itr].next;
线性表的游标实现_JAVA描述《数据结构与算法分析》
线性表的游标实现_JAVA描述《数据结构与算法分析》        return new CursorListItr(itr);        
线性表的游标实现_JAVA描述《数据结构与算法分析》    }

线性表的游标实现_JAVA描述《数据结构与算法分析》}

线性表的游标实现_JAVA描述《数据结构与算法分析》
本文转自冬冬博客园博客,原文链接:http://www.cnblogs.com/yuandong/archive/2006/08/20/481986.html,如需转载请自行联系原作者