程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java實現鏈表結構的詳細代碼

Java實現鏈表結構的詳細代碼

編輯:JAVA綜合教程

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;
             }
      }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved