Java实现链表结构的详细代码

来源:互联网 发布:进销存erp软件 编辑:程序博客网 时间:2024/04/27 21:16

一、数据准备

 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;       }}
复制代码
0 0