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;
       }
}
时间: 2024-10-02 03:44:07

java实现链表结构详细代码的相关文章

(原创)用Java实现链表结构对象:单向无环链表

转载请注明本文出处:http://www.cnblogs.com/Starshot/p/6918569.html 链表的结构是由一个一个节点组成的,所谓链,就是每个节点的头尾连在一起.而单向链表就是:每个节点包含了当前节点的值和下一个节点引用.双向链表就是每个节点包含了当前节点的值和上下两个节点的引用.相对于数组结构,链表的增删效率会更加高. 这边文章主要讲怎么用Java实现一个简单的链表结构:单向无环链表.以及实现一些数据处理的方法. 首先,新建一个节点类(本次例子中的节点值都是字符串类型):

java连接oracle数据库详细代码

详细代码: import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; public class DBUtil(){ private static final String CLASSNAME="oracle.jdbc.driver.OracleDriver&quo

JAVA基础——链表结构之双端链表

双端链表:双端链表与传统链表非常相似.只是新增了一个属性-即对最后一个链结点的引用 如上图所示:由于有着对最后一个链结点的直接引用.所以双端链表比传统链表在某些方面要方便.比如在尾部插入一个链结点.双端链表可以进行直接操作 但传统链表只能通过next节点循环找到最后链结点操作.所以双端链表适合制造队列. 下面的双端链表类.有几个重要方法. insertFirst(插入首链结点) 这个方法与上篇博文的单链表是基本一样的.唯一区别就是,多了个last引用的操作.正常由于last是指向尾链结点的引用,

利用java实现一个简单的链表结构

定义: 所谓链表就是指在某节点存储数据的过程中还要有一个属性用来指向下一个链表节点,这样的数据存储方式叫做链表 链表优缺点: 优点:易于存储和删除 缺点:查询起来较麻烦 下面我们用java来实现如下链表结构: 首先定义节点类: 复制代码package LinkTest;/** 链表节点类 @author admin */public class Node {private int value;//存储数据private Node next;//下一个节点/** 定义构造器 @param vlau

基本算法思想Java实现的详细代码

基本算法思想Java实现的详细代码 算法是一个程序的灵魂,一个好的算法往往可以化繁为简,高效的求解问题.在程序设计中算法是独立于语言的,无论使用哪一种语言都可以使用这些算法,本文笔者将以Java语言为例介绍一些常用的算法思想. 分类 穷举算法思想 递推算法思想 递归算法思想 分治算法思想 概率算法思想  穷举算法思想 穷举算法的基本思想 从所有可能情况中搜索正确答案 1. 对于一种可能情况,计算其结果. 2. 判断结果是否满足,如不能满足者执行第一步来搜索下一个可能的情况:如满足则表示选找到一个

Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】

http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附详细代码] 标签: SparkECLIPSEJAVAMAVENwindows 2016-06-18 22:35 405人阅读 评论(0) 收藏 举报  分类: spark(5)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 前言 本文旨在记录初学Spark时,根据官网快速

java数据结构:单链表常见操作代码实现

一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashMap等集合的底层结构都是链表结构.链表以结点作为存储单元,这些存储单元可以是不连续的.每个结点由两部分组成:存储的数值+前序结点和后序结点的指针.即有前序结点的指针又有后序结点的指针的链表称为双向链表,只包含后续指针的链表为单链表,本文总结的均为单链表的操作. 单链表结构: Java中单链表采用No

java链表结构

链表介绍 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer). 链表与数组的区别 链表和数组都叫可以叫做线性表, 数组又叫做顺序表,主要区别在于,顺序表是在内存中开辟一段连续的空间来存储数据,而链表是靠指针来连接多块不连续(也可以是连续)的空间,在逻辑上形成一片连续的空间来存储数据. 两种各有各的好处,链表方便删除和插入,顺表表方便排序等. 单线链表 原文链接:JAVA单向链表的操作(增加

java虚拟机底层结构详解[转]

本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在以前的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本语法到SSH框架.这里面应该包含了在java领域里面的大部分内容了吧.但是,那些知识点是让我们从一个应用的层面上了解了java,java程序真正底层的运行机制和一些底层虚拟机的工作我们还不了解,虽然这些内容在我们真正的开发中几乎用不到这些底层的东西,但对于我们对java的理解会有比较大的帮助.尤其也对以后