Java学习之链表

数据结构学了,java实现下

package com.gh.Link;
/**
 * 链表的实现
 * @author ganhang
 *
 */
public class Links {
    public static void main(String[] args) {
        NodeManage nm=new NodeManage();
        nm.add("节点1");
        nm.add("节点2");
        nm.add("节点3");
        nm.add("节点4");
        nm.add("节点5");
        nm.add("节点6");
        nm.add("节点7");
        nm.add("节点8");
        nm.add("节点9");
        nm.add("节点10");
        nm.print();
        nm.delete("节点3");
        nm.print();
        }
}
package com.gh.Link;
/**
 * 链表管理(增删查)
 * @author ganhang
 *
 */
public class NodeManage {
    private Node root;

    public void add(String name) {
        if (root == null) {
            root = new Node(name);
        } else {
            root.addNode(name);
        }
    }

    public void delete(String name) {
        if (root != null) {
            if (root.name.equals(name)) {
                root = root.next;
            } else {
                root.delNode(name);
            }
        }
    }

    public void print() {
        if(root!=null){
            System.out.print(root.name);
            root.printNode();
            System.out.println();
        }
    }

    class Node {//内部类实现根节点下节点的操作
        private String name;
        private Node next;

        public Node(String name) {
            this.name = name;
        }

        public void addNode(String name) {
            if (this.next == null) {
                this.next = new Node(name);
            } else {
                this.next.addNode(name);
            }
        }

        public void delNode(String name) {
            if (this.next != null) {
                if (this.next.name.equals(name)) {
                    this.next = this.next.next;
                } else {
                    this.next.delNode(name);
                }
            }
        }
        public void printNode() {
            if(this.next!=null){
                System.out.print("-->"+this.next.name);
                this.next.printNode();
            }
        }
    }
}
时间: 2025-01-04 15:22:16

Java学习之链表的相关文章

Java学习笔记--链表

心在山东身在吴,飘蓬江海漫嗟吁. 他时若遂凌云志, 敢笑黄巢不丈夫. --水浒传 先上源代码,LinkedList类: 1 private static class Node<E> { 2 E item; 3 Node<E> next; 4 Node<E> prev; 5 6 Node(Node<E> prev, E element, Node<E> next) { 7 this.item = element; 8 this.next = nex

Java学习分享--&gt;集合--&gt;链表

链表是一个有序集合,它将每个对象存放在独立的结点中,每个结点还存放着下一个结点的引用.在Java中由于链表是双向链接的,每个结点还存放着前一个结点的引用. (图片引自Java核心技术 卷1 基础知识) 删除链表中间的一个元素,只需要更新被删除元素附近的结点.假设我们有三个结点,删除第二个结点后,第一个结点将原本存放第二个结点的引用更新为第三个结点的引用(这里对应我们前面提到的"每个结点还存放着下一个结点的引用"),而第三个结点将原本存放第二个结点的引用更新为第一个结点的引用(这里对应我

java实现单链表

前面已经介绍了java如何实现顺序链表:http://www.cnblogs.com/lixiaolun/p/4643664.html 接下来,我们开始学习java实现单链表. 单链表类 package linklist; public class LinkList { class Element { public Object value=null; private Element next=null; } private Element header = null;//头结点 /** * 初

非专业码农 JAVA学习笔记 6java工具类和算法-string

续<非专业码农 JAVA学习笔记 5 java工具类和算法> 五.字符串string 字符串和字符的差别:字符串双引号括起来”n”,字符用单引号括起来,表示一种符号’\n’ 1.string的主要方法和属性 类 方法或者属性 备注 定义string Stirng s=new string(“值”),string s=”值” 属性 string.length:string的长度为字节 方法startswith,endswith s.startwith(“值”)-以值为开头,s.endswith(

JAVA学习笔记 -- 数据结构

一.数据结构的接口 在Java中所有类的鼻祖是Object类,但是所有有关数据结构处理的鼻祖就是Collection和Iterator接口,也就是集合与遍历. 1.Collection接口 Collection c = new Xx(); // c可以称为Collection接口回调对象,虽然它被声明为Collection类型,但是实例化时实现的是接口的实现类Xx.它的方法也是用来操作实现类的对象. <span style="white-space:pre"> </s

java学习笔记 第二篇 核心技术(二)

第十四章 集合类 集合类用来存放对象的引用.继承关系如下图: 14.1 Collection 接口 是层次结构中的根接口,构成Collection的单位称为元素.Collection接口不能直接使用,但该接口提供了添加元素.删除元素.管理数据的方法. Collection接口常用方法: 14.2 List 集合 包括List接口以及List集合的所有实现类.List集合中的元素允许重复,各元素循序就是对象插入的顺序 1.List接口,两个重要方法: get(int index): 获取指定索引位

Java学习笔记(2015.7.27~7.31)

Java学习笔记(2015.7.27~7.31) Java 课堂 Java学习笔记(2015.7.27~7.31) 小技巧 常用方法 1.List另一个子类--LinkedList 2.数组的常用方法 3.排序 1.二分法查找 2.数组转换为List 3.可变参数Type ... param (了解) 1.容器Collection 2.自动拆装箱(了解) 3.JDK增强for循环(了解) 4.泛型(掌握) 5.iterator与for在迭代中的区别 1.概念:保存多个对象的对象. 2.JDk为什

线程异步学习(基于java学习笔记)

一 基本概念的理解 1.1线程中断方法 --interrupt() 当调用一个线程的interrupt方法时候,线程并没有真的被中断,只是对其状态改变,线程会有一个boolean变量isInterrputed.有wait sleep方法会阻塞线程. wait 和sleep方法都会使得线程挂起,阻塞.区别是wait会释放资源,而sleep方法并不会释放资源.一旦执行wait方法后,线程立即被挂起,直到有其他线程调用资源的notify方法.具体参见博客,多线程资源争用问题: http://blog.

第八周Java学习总结

一.知识点摘要 1.泛型 泛型(Generic):就是指参数化类型,上面的List就是参数化类型,因此就是泛型,而String就是该List泛型的类型参数.泛型可以使集合可以记住元素类型,即取出元素的时候无需进行强制类型转化了,可以直接用原类型的引用接收:一旦指定了性参数那么集合中元素的类型就确定了,不能添加其他类型的元素,否则会直接编译保存,这就可以避免了"不小心放入其他类型元素"的可能:上述保证了如果在编译时没有发出警告,则在运行时就一定不会产生类型转化异常(ClassCastEx