JAVA实现单链表

节点

package com.ghg.data_structure.sit;

/**
 * 节点
 * @author Administrator
 *
 */
public class Node {
    /**
     * 数据
     */
    public int data;
    /**
     * 下一个元素
     */
    public Node next;
    public Node(int data, Node next) {
        super();
        this.data = data;
        this.next = next;
    }


}

链表

package com.ghg.data_structure.sit;

import com.ghg.data_structure.singlinktab.Node;

import sun.reflect.generics.tree.VoidDescriptor;

public class LinkList {

    public Node first;


     public LinkList() {  
         this. first = null;  
   }  

     /**
      * 添加元素到第个位置
      * @param node
      */
     public void addFirst(Node node){
         node.next=first;
         first=node;
     }
     /**
      * 删除第一个元素
      */
     public void deleteFirst(){
         first=first.next;
     }

     public void addNode(Node node){
         //一个指针
         Node current =first;
         /**
          * 找到最后个元素
          */
         while(current.next!=null){
             current=current.next;
         }
         //添加到最后
         current.next=node;
     }

     /**
      * 插入指定位置
      * @param index
      * @param node
      */
     public void addNodeByIndex(int index,Node node){

         if(index<1 || index >length()+1){
             System.out.println(index+ " 位置不正确 length  "+length());
             return;
         }
         /*
          * 记录我们遍历到第几个结点了,也就是记录位置  要把index添加到length后面
          */
         int length=1;
         /**
          * 指针
          */
         Node current=first;
         while(current.next!=null){
             /**
              * 判断是否到达指定位置。
              */
             if(index==length++){
                 //插入操作。  把原来的下一个赋值给新的节点
                 node.next=current.next;
                 current.next=node;
                 return;

             }
             current=current.next;
         }
     }

     /**
      * 删除节点
      */
     public void delNodeByIndex(int index){

         if(index<1 || index >length()+1){
             System.out.println(index+ " 位置不正确 length  "+length());
             return;
         }
         /*
          * 记录我们遍历到第几个结点了,也就是记录位置  要把index添加到length后面
          */
         int length=1;
         /**
          * 指针
          */
         Node current=first;
         while(current.next!=null){
             if(index==length++){
                 /**
                  * 当前=下一个一下一个
                  */
                 current.next=current.next.next;

                 return;
             }
             current=current.next;
         }
     }


     /**
      * 获取链表的长度
      */
     public int length(){
         int length=1;
         Node current =first;
         /**
          * 找到最后个元素
          */
         while(current.next!=null){
             length++;
             current=current.next;
         }
         return length;
     }

     /**
      * 显示
      */
     public void display(){

         Node current = first;  
         while (current != null) {  
            current.display();  
            current = current. next;  
        }  
        System. out.println();  
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值