• java实现链表结构详细代码


    一、数据准备

     1. 定义节点

       2.   定义链表

               1.数据部分

               2.节点部分

    class DATA              //数据节点类型
    {
      String key;
      String name;
       int age;      
              
    }    
    
    class CLType                 //定义链表结构
    {
    DATA nodeData  =new DATA();
    CLType nextNode;
    }

    二、追加节点

    1. 首先分配内存,保存新增节点
    2. 从头应用head开始追个检查,直到找到最后结点
    3. 将表尾结点地址部分设置为新增节点的地址
    4. 将新增节点的地址部分置为null
    CLType CLAddEnd(CLType head,DATA nodeData)
    {
        CLType node,temp;
        if((node=new CLType()==null){
        System.out.println("申请内存失败");
        return null;            //申请内存失败
    }
    
          else{
                node.nodeData=nodeData;
                node.nextNode=null;
                if(head==null)
                 {
                  head =node;
                  return head;
                  }
                 temp=head;
                 while(temp!=null){
                 temp=temp.nextNode;               //查找链表的末尾
                 
                 }
                 temp.nextNode=node;
                 return head;
    }
    
    }                                                                                    

    三、插入头结点

    1. 分配内存空间
    2. 使新增节点指向head
    3. 使head指向新增节点
    CLType CLAddFirst(DATA nodeData,CLType head){
          CLType node;
          if((node=new CLType())==null)
             {
                 return null;
             }
    else{ node.nodeData=nodeData; node.nextNode=head; head=node; return head; } }

    四、查找节点

    CLType CLFindNode(CLType head,String key)
    {
             CLType temp;
             temp =head;
             while(temp!=null){
              if(temp.nodaData==key)
               return temp;
               temp=temp.nextNode;
             }
              return null;
    }

    五、插入节点

    CLType CLInsentNode(CLType head,String findkey,DATA nodeData)
    {
          CLtype node,nodetemp;
          if((node=new CLType())==null)
          {
                  System.out.println("申请内存失败!");
                  return null;
          }
           node.nodaData=nodeData;
           nodetemp=(head,findkey);     //查找对应节点
           if(nodetemp!=null)                 //若找到节点
           {
                    node.nextNode=nodetemp.nextNode;
                    nodetemp.nextNode=node;
            }
            else
            {
                    System.out.println("未找到正确的插入位置!");
            }
            return head;
    }

    六、删除节点

    int CLDeleteNode(CLType head; String key)
    {
         CKtype node,temp;
          node = head;
          temp = head;
          while(temp!=null)
          {
                if(temp.nodeData.key.compareTo(key)==0)
                {
                       node.nextNode=temp.nextNode;
                       temp=null;
                       return 1;
                 }
               elas
                {    
                       note=temp;
                       temp=temp.nextNode;
                 }     
          }
           return 0;
    }    

    七、计算链表长度

    int CLLength(CLType head )
    {
         CLType temp;
         temp = head;
         int length=0;
         while(temp!=null)
         {
                 length++;
                 temp=temp.nextNode;
          }
          return length;
    }

    八、显示所有节点

    void CLAllNode(CLType head)
    {
           CLType temp;
           DATA  nodeData;
           temp = head;
           System.out.println("当前链表共有"+CLLength(head)+"个节点。链表数据如下:");
         
           while(temp!=null)
           {
               nodeData=temp.nodeData;
               System.out.println(""+nodeData.key+nodeData.name+nodeData.age);
               temp=temp.nextNode;
           }
    }
  • 相关阅读:
    SQL SERVER 2005中同义词实例
    内聚性是模块之所以成为模块的原因--一个中心、单一职责
    软件开发的方法论
    系统集成与软件开发
    编程的本质是构建---建构你想要表达的世界
    编程思想与以人为本-编程的本质
    软件开发之道-软件开发背后的哲学
    swift 协议(结合扩展)的特点
    swift的特性:扩展、协议、泛型
    从数据流角度管窥 Moya 的实现(一):构建请求
  • 原文地址:https://www.cnblogs.com/whieenz/p/5341211.html
Copyright © 2020-2023  润新知