`

用Java写一个链表数据

阅读更多
package arrayListTest;
//定义一个链表
public class Node {
 
    private int m_Data;//链表中的数据
    private Node m_Next;//链表中指针属性  指向下个Node对象的对象应用
    Node(int data){
      m_Data=data;
      m_Next=null;
    }
    Node(int data,Node next){
      m_Data=data;
      m_Next=next;
    }
    void setData(int data){//修改节点中的数据
      m_Data=data;
      
    }
    int getData(){//获得节点中的数据
      return m_Data;
    }
    void setNext(Node next){//修改节点的指针
      m_Next=next;
    }
    Node getNext(){//获得节点中的指针指向的对象的引用
      return m_Next;
    }
}

 

package arrayListTest;
//修改链表
public class LinksList {
 
  Node m_FirstNode;//链表中的第一个节点
//构造函数
  LinksList(){
    m_FirstNode=null;
  }
  LinksList(int data){
    m_FirstNode=new Node(data);
  }
  String visitAllNode(){//遍历数据  将数据串成一个字符串 返回一个S
    Node next=m_FirstNode;
    String s="";
    while(next!=null){
      s=s+next.getData()+";";
      next=next.getNext();    
    }
    return s;
  }
  void insertAtBegin(int data){//将数据插入到节点的前面
    if(m_FirstNode==null){//如果是空链表的话直接插入就可以了
        m_FirstNode=new Node(data);//把data做为第一个节点传给Node对象
    }
    else{
      m_FirstNode=new Node(data,m_FirstNode);//把新节点插入到第一个节点的前面 并指向原来的第一个节点
    }
  }
  void insertAfterId(int data,int id){//将数据data插入到包含数据ID的节点后面 若连接没有id则插入在整个链表的最后
    Node next = m_FirstNode;
    if(next==null){//对空链表直接插入
      m_FirstNode=new Node(data);
    }else{
      while(next.getNext()!=null&& next.getData()==id){
        next=next.getNext();//找到合适的插入位置
//        Node i=next.getNext();//创建一个next的指针
//        Node next1= new Node(data,i);//创建Node的对象 把data插入到I的位置上
//        next.setNext(next1);
        next.setNext(new Node(data,next.getNext()));//按照id来设置数据
      }
    }
  }
    boolean removeAtId(int id){//删除链表中的第一个数据为ID的节点
      Node ahead=m_FirstNode;//前面的节点
      Node follow=ahead;//指向ahead节点
      if(ahead==null){
        return false;        
      }
      else if(ahead.getData()==id){//如果节点获取的数据Data和ID是一样的
        m_FirstNode=m_FirstNode.getNext();//删除成功
        return true;
      }else{
        ahead=ahead.getNext();
        while(ahead!=null){
          if(ahead.getData()==id){
            follow.setNext(ahead.getNext());
            return true;
          }
          follow=ahead;
          ahead=ahead.getNext();
        }
      }
      
      return  false;
    }
    void removeAll(){
      m_FirstNode=null;
    }
}

 

 

package arrayListTest;
 
public class UserLinksList {
 
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    LinksList list = new LinksList(-1); //创建一个含有节点的链表
    for (int i = 0; i < 10; i++) {
      list.insertAtBegin(i); //想空链表中插入10个节点
      System.out.println(list.visitAllNode());
    }
    list.insertAfterId(37, 6); //在指定的位置插入插入在数据6的后面
    System.out.println(list.visitAllNode());
    list.insertAfterId(-1, 3); //在指定的位置插入 插入在位置3的后面
    System.out.println(list.visitAllNode());
    if (list.removeAtId(4)) { //删除链表中的指定节点
      System.out.println(list.visitAllNode());
    } else {
      System.out.println("链表中不存在这个数据");
 
    }
    //list.removeAll();//删除整个链表
  }
}

 

分享到:
评论

相关推荐

    java 数据结构 链表

    - 单向链表的节点定义:通常会有一个类表示链表节点,例如`Node`,包含一个数据字段和一个指向下一个节点的引用字段。 - 插入操作:在链表的头部或尾部插入新节点相对简单,只需改变相应节点的引用即可。 - 删除...

    java 数据结构 遍历链表程序

    在Java中,我们通常使用类来表示链表节点,如定义一个Node类,包含一个数据字段和一个指向下一个节点的引用字段。 ```java public class Node { int data; Node next; public Node(int data) { this.data = ...

    基于java数据结构链表写的猴子选大王

    总结,本文介绍了如何使用Java中的链表数据结构来解决“猴子选大王”问题,包括链表节点的定义、猴子的添加和删除操作。在实际编程中,理解和熟练运用各种数据结构是解决问题的关键,而链表作为其中一种基础数据结构...

    java 单链表和双向链表的实现

    在Java中,我们可以创建一个表示链表节点的类,通常称为`Node`,包含数据字段和指向下一个节点的引用。然后,创建一个`LinkedList`类,包含头节点并提供所需操作的方法。例如,要在头部添加节点,可以创建新节点并将...

    Java数据结构 线性表,链表,哈希表是常用的数据结构

    Java数据结构 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构

    Java实现循环链表

    用Java定义一个循环链表,实现链表的基本操作: 初始化*、获取头结点、添加新元素*、删除链表元素 、获取链表元素*、查找链表元素*、更新链表中某个元素、 判断链表是否为空、求链表元素个数、输出链表元素、清空...

    java模拟实现数组链表树图等数据结构

    链表由节点组成,每个节点包含数据和指向下一个节点的引用。Java中有ArrayList和LinkedList两种链表实现,前者基于数组,后者基于链式节点。项目可能模拟了这些链表的操作,如添加、删除、查找和遍历。 树是一种非...

    java 动态的数组链表

    在实现动态数组链表时,例如`MyLinkedList.java`可能包含自定义的链表节点类(Node),包含数据和指向下一个节点的引用,以及链表类本身,提供类似ArrayList的操作。`Java.jpg`可能是用于辅助理解链表概念的可视化图...

    用JAVA写一个双向循环链表的代码

    酒吧里,一桌人(≥10)围在一起行酒令。酒令如下:先按照顺时针方向从1开始依此数数。若是数到7的倍数或者含有7这个数,则调转方向接着数。依此类推。请模拟此过程。

    java实现链表操作

    用java实现了数据结构中的链表,作为新手学习数据结构和java的资料。

    Java算法(链表操作实例)

    链表不同于数组,它不连续存储元素,每个元素(称为节点)包含数据以及指向下一个节点的引用。在Java中,我们可以使用类来表示链表节点,如: ```java public class ListNode { int val; // 节点的值 ListNode ...

    java实现的动态链表

    链表由一系列节点组成,每个节点包含两部分:数据和指向下一个节点的引用。在Java中,我们可以用类来表示节点,例如`节点.java`可能定义如下: ```java public class Node { int data; Node next; public Node...

    用链表实现线性表java

    在Java编程语言中,线性表是一种常见的数据结构,它包含了一组有序的元素集合。...通过`ChainList.java`和`ListInterface.java`,我们可以学习如何在Java中构建一个功能完备的链表结构,并了解其在实际应用中的价值。

    试析用Java实现链表数据结构.pdf

    标题“试析用Java实现链表数据结构.pdf”所揭示的知识点涵盖了Java编程语言在内存管理和链表数据结构实现方面的深入探讨。描述中提到的“#资源达人分享计划#”可能意味着这篇文章是作为知识分享的一部分,而标签...

    java 实现倒序链表

    在本篇文章中,我们将探讨如何使用Java来实现一个倒序链表的功能。链表作为一种常见的数据结构,在计算机科学中有着广泛的应用,而倒序链表则是链表操作中的一项基本技能,对于理解链表的工作原理和提升编程能力都...

    链表(数据结构--Java版)

    2. `OrderedLinkedList.java` - 这可能是一个有序链表的实现,意味着链表中的元素按照特定的顺序(如升序或降序)排列。在插入新元素时,它会确保新元素位于正确的位置,保持链表的排序。 3. `LinkedListClass.java...

    基于java的循环双链表

    循环双链表是一种数据结构,它在单链表的基础上增加了前后指针,使得链表的首尾相连,形成一个环状。在Java编程中,我们可以使用面向对象的设计思想来实现循环双链表。通常,这样的数据结构会包含三个主要部分:一个...

    java链表 个人总结

    Java链表是编程中一种基础且重要的数据结构,它在许多场景下有着广泛的应用。本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组...

    java 版本循环链表

    在提供的文件信息中,虽然标题和描述部分未给出具体内容,但是“java 版本循环链表”的标题和部分描述内容暗示了文章内容应该是与Java编程语言实现的循环链表数据结构相关。循环链表是一种常见的数据结构,在计算机...

Global site tag (gtag.js) - Google Analytics