单链表_JAVA描述《数据结构与算法分析》

简介:
节点
package DataStructures;

class ListNode  {
    
    //Frientdly data;accessible by other package routines
    Object element;
    ListNode next;
    
    // Constructers
    ListNode(Object theElement) {
        this(theElement, null);
    }


    ListNode(Object theElement, ListNode n) {
        element = theElement;
        next = n;
    }

}

迭代器
package DataStructures;

public  class LinkedListItr  {
    ListNode current; // Current position

    LinkedListItr(ListNode theNode) {
        current = theNode;
    }


    public boolean IsPastEnd() {
        return current == null;
    }


    public Object Retrive() {
        return IsPastEnd() ? null : current.element;
    }


    public void Advance() {
        if (!IsPastEnd())
            current = current.next;
    }

}


链表类
package DataStructures;

public  class LinkedList  {
    private ListNode header;

    public LinkedList() {
        header = new ListNode(null);
    }


    public boolean IsEmpty() {
        return header.next == null;
    }


    public void makeEmpty() {
        header.next = null;
    }


    public LinkedListItr Zeroth() {
        return new LinkedListItr(header);
    }


    public LinkedListItr First() {
        return new LinkedListItr(header.next);
    }


    /**
     * Return iterator corresponding to the first node containing an item.
     * 
     * 
@param x
     *            the item to search for.
     * 
@return an iterator; iterator IsPastEnd if item is not found.
     
*/

    public LinkedListItr Find(Object x) {
        ListNode itr = header.next;

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

        return new LinkedListItr(itr);
    }


    /**
     * Remove th first occurrence of an item.
     * 
     * 
@param x
     *            the item to remove.
     
*/

    public void Remove(Object x) {
        LinkedListItr p = FindPrevious(x);

        if (p.current.next != null)
            p.current.next = p.current.next.next; // Bypass deleted node
    }


    /**
     * Return itreator prior to the first node containing an item.
     * 
     * 
@param x
     *            the item to search for.
     * 
@return appropriate iterator if the item is found.Otherwise, the iterator
     *         corresponding to the last element in the lis is returned.
     
*/

    public LinkedListItr FindPrevious(Object x) {
        ListNode itr = header;

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

        return new LinkedListItr(itr);
    }


    /**
     * Insert after p.
     * 
     * 
@param x
     *            the item to insear.
     * 
@param p
     *            the position prior to the newly inserted item.
     
*/

    public void Insert(Object x, LinkedListItr p) {
        if (p != null && p.current != null)
            p.current.next = new ListNode(x, p.current.next);
    }


    // Simple print method
    public static void PrintLinkedList(LinkedList theList) {
        if (theList.IsEmpty())
            System.out.print("Empty list");
        else {
            LinkedListItr itr = theList.First();
            for (; !itr.IsPastEnd(); itr.Advance())
                System.out.print(itr.Retrive() + " ");
        }


        System.out.println();
    }

}

本文转自冬冬博客园博客,原文链接:http://www.cnblogs.com/yuandong/archive/2006/08/19/481154.html ,如需转载请自行联系原作者
相关文章
|
2月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
97 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
2月前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
53 1
|
2月前
|
存储 Java
告别混乱!用Java Map优雅管理你的数据结构
【10月更文挑战第17天】在软件开发中,随着项目复杂度增加,数据结构的组织和管理至关重要。Java中的Map接口提供了一种优雅的解决方案,帮助我们高效、清晰地管理数据。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,有效提升了代码质量和维护性。
97 2
|
2月前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
79 2
|
6天前
|
缓存 算法 搜索推荐
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
20 6
|
17天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
36 5
|
1月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
52 6
|
1月前
|
存储 Java 索引
Java中的数据结构:ArrayList和LinkedList的比较
【10月更文挑战第28天】在Java编程世界中,数据结构是构建复杂程序的基石。本文将深入探讨两种常用的数据结构:ArrayList和LinkedList,通过直观的比喻和实例分析,揭示它们各自的优势与局限,帮助你在面对不同的编程挑战时做出明智的选择。
|
2月前
|
存储 算法 Java
Java 中常用的数据结构
【10月更文挑战第20天】这些数据结构在 Java 编程中都有着广泛的应用,掌握它们的特点和用法对于提高编程能力和解决实际问题非常重要。
33 6
|
2月前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
35 1