`

用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();//删除整个链表
  }
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics