Java中单向链表的实现:增删查改功能

写一个大家都比较熟悉的数据结构:单向链表。

不过先告诉大家一个小秘密,java的API里面已经提供了单向链表的类,大家可以直接拿来用,不过学习数据结构课程的时候想必大家也已经知道,虽然系统会给我们提供一些常用的数据结构,但是自定义的总是能够带来不同的喜感的,而且通过自己的编写也更能够让我们了解其中实现的过程,而且我们还可以写一些比较个性化的方法作为属于自己的数据结构。这里主要是介绍一些常用结构里面都会用到的方法,以及链表具体是如何操作的。

首先,单链表相对于队列的优势在于存储地址不是连续的,这样的意义在于,操作其中的某一个位置的元素时不需要对之前的其他元素都进行内存操作,大大的为我们的计算机减压了。下面直接进入正题:

先要定义一个结点类,如下:

Java代码

public class Node {
        Node next;//下一个结点的引用
        Object obj;//结点元素
        public Node(Object obj){
            this.obj=obj;
        }
}

然后就是我们的LinkedList类,先要定义一个空链表:

Node head=null;//创建一个空链表,头结点

Node last=head;//尾结点

打印链表有两种方法,可以采用递归,也可以使用非递归的方法,如下:

Java代码

/**
* 非递归打印元素的方法
*/
public void print(Node head){
    while(head!=null){
        System.out.println(head.obj);
        head=head.next;//索引向后移位
    }
}
/**
 * 递归打印链表元素的方法
 */
public void printNode(Node head){
    if(head!=null){
        System.out.println(head.obj);
        Node node=head.next;
        printNode(node);//递归调用
    }
}

非递归方法有一个致命的缺陷,打印的同时改变了头结点的位置,所以我们应该倾向于使用递归方法。

说了这么多,增删查改正式开始:

向链表中添加元素。判断一个链表已经到达末尾的依据是该结点的next引用已经为Null,所以要向末尾添加一个结点,先要把新增结点放在最后,再把末尾结点向后移位,具体操作过程如下图:      

代码如下:

Java代码

/**
 * 向指定链表添加元素的方法
 * @param obj   插入的元素
*/
public void add(Object obj){
    Node node=new Node(obj);//新建结点
    if(head==null){//如果链表为空
        head = node;
    }else{
        last.next=node;//先把新增结点放在最后
    }
    last=node;//再把最后一个结点向后移位
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索递归
, 链表
, 十字链表
, 链表查询
, 方法
, 结点
, 元素
, head
, 链表 递归
, java链表问题
, 源代码链表数据结构
, java链表数据结构
, 一个
增删查改
,以便于您获取更多的相关知识。

时间: 2024-08-31 18:26:01

Java中单向链表的实现:增删查改功能的相关文章

MongoDB中对文档的增删查改基本操作方法总结_MongoDB

插入文档:insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 语法: insert() 命令的基本语法如下: >db.COLLECTION_NAME.insert(document) 例子:  >db.mycol.insert({    _id: ObjectId(7df78ad8902c),    title: 'MongoDB Overview',     description: 'MongoDB is

浅谈Android手机联系人开发之增删查改功能

最近在做手机联系人的功能模块的时候,遇到了很多的坑,在网上搜索的有一些所谓的最全的手机联系人开发的介绍还存在一些bug,所以我把我最近的项目心得和方法写下来,既能帮助大家减少了解android开发手机联系人的门槛,好,废话少说,接下来直奔主题. 一.深入浅出手机联系人的前奏(小米手机的data表跟模拟器的data表不一样) 1.手机联系人主要是对contacts2.db数据库表的操纵,这个数据库中有三个表是比较重要的,分别是data,raw_contacts,mimetyps这三个表.在下面的增

MySQL中对于索引的基本增删查改操作总结_Mysql

创建索引 MySQL创建索引的语法如下: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_name (index_col_name,...) 其中对应的语法变量信息如下: [UNIQUE|FULLTEXT|SPATIAL] 中括号中的这三个关键字表示创建的索引类型,它们分别表示唯一索引.全文索引.空间索引三种不同的索引类型.如果我们不指定任何关键字,则默认为普通索引. index_name

iis-用VS建立的webservice,连接sql对数据库进行增删查改,怎么样发布到IIS上

问题描述 用VS建立的webservice,连接sql对数据库进行增删查改,怎么样发布到IIS上 用vs调试已经实现和数据库的增删查改功能,但发布使用文件系统发布,显示不支持数据库,要怎么样发布才支持数据库,在IIS中进行增删查改呢? 解决方案 怎么显示的不支持数据库,检查你的web.config怎么配置的,连接字符串怎么写的,目标计算机上是否安装了sql server 解决方案二: 点击发布的时候目标文件夹选的是iis网页的文件夹,然后点击下一步,就出现此发布方法不支持数据库的发布 web.c

java中sql语句的具体用法,增删查改

问题描述 java中sql语句的具体用法,增删查改 java中sql语句的具体用法,增删查改,如何用动态的方法改变查找的位置,输出的位置,判断这个数据是否存在于数据库中 解决方案 这问题有自己思考过么 解决方案二: https://www.baidu.com/link?url=jykznQpWlQYTk0AcnMob3UN-B_iYzOccrutv00x5SAaAVNOYO8xApShvC6wqWeG9NYgnkacMB-lvt08dSMc68a&wd=&eqid=a253ae6e0001

链表 算法-基于链表的算法分析之增删查改

问题描述 基于链表的算法分析之增删查改 在链表描述中,集合中的元素都放在链表的节点中进行描述.链表中的节点不是一个数组元素,因此不能通过公式来映射定位某个元素.取而代之的是,每个节点中都包含了下一个节点的位置信息,链表的表头包含了第一个节点的位置信息. 为了在集合中找到第k个元素,就必须从表头开始,遍历第1个到第k个节点.它的时间复杂度是O(k),平均时间复杂度为O(length). 为了在集合中删除第k个元素,就要先找到第k-1和第k个节点,使第k-1个节点的下一个节点位置信息指向第k+1个节

qt-如何在QSqlQueryModel中实现增删查改,然后如何与mysql数据库同步更新

问题描述 如何在QSqlQueryModel中实现增删查改,然后如何与mysql数据库同步更新 本人是个菜鸟在做一个简单的同学录系统,这是进入之后的界面 我想实现鼠标选取一个表格点击"修改同学信息"之后能对它在修改并且修改确定后能同步刷新MySQL数据库而且表格中的数据也更新. 下面是我的代码:#include ""record.h""#include ""ui_record.h""#include &qu

SQL Server 中BIT类型字段增删查改那点事

原文:SQL Server 中BIT类型字段增删查改那点事 话说BIT类型字段之前,先看"诡异"的一幕,执行Update成功,但是查询出来的结果依然是1,而不是Update的2 当别人问起我来的时候,本人当时也是处于懵逼状态的,后面联想具体的业务突然想起来这个字段是bit类型的 如果把这个现象跟BIT类型字段连续起来就不觉得奇怪了. 废话不多,直接上代码看结果就好了. 先建一个测试表 CREATE TABLE TestBIT ( Id INT IDENTITY(1,1), BitCol

java中的链表类的remove问题

问题描述 java中的链表类的remove问题 新人初学java,有些基本问题不是很懂,求教各位,谢谢 java中的LinkedList这个链表类中有这样一个方法,removefirst方法,含义是删除,并且返回链表的第一个元素,我想问下各位,是不是只要是删除了第一个元素,那么后面的第二个元素会顶到原来第一个元素的位置上,当我第二次调用这个方法时,相当于删除了链表的第一个元素(原来的第二个元素)? 谢谢各位了 解决方案 是的,removeFirst()方法返回链表第一个元素,并且删掉这个元素,当