java实现单向链表的增、删、改、查
单向链表
作者:vashon
- package com.ywx.link;
- /**
- * 单向链表
- * @author vashon
- *
- */
- public class LinkTest {
- public static void main(String[] args) {
- Link l=new Link();
- l.addNode("A");
- l.addNode("B");
- l.addNode("C");
- l.addNode("D");
- l.addNode("E");
- System.out.println("==========增加之后的内容==========");
- l.printNode();
- System.out.println("\n包含D:"+l.contains("D"));
- System.out.println("==========删除之前的内容==========");
- l.deleteNode("A");
- System.out.println("==========删除之后的内容==========");
- l.printNode();
- }
- }
- class Link{//链表的完成类
- class Node{//保存每个节点
- private String data;//节点内容
- private Node next;//下一个节点
- public Node(String data){
- this.data=data;
- }
- public void add(Node newNode) {//将节点加入到合适的位置
- if(this.next==null){
- this.next=newNode;
- }else{
- this.next.add(newNode);
- }
- }
- public void print() {//输出节点的内容
- System.out.print(this.data+"\t");
- if(this.next!=null){
- this.next.print();//递归调用输出
- }
- }
- public boolean search(String data){//内部搜索的方法
- if(data.equals(this.data)){
- return true;
- }else{
- if(this.next!=null){//向下继续判断
- return this.next.search(data);
- }else{
- return false;
- }
- }
- }
- public void delete(Node previous, String data) {
- if(data.equals(this.data)){//找到了匹配的节点
- previous.next=this.next;//空出当前的节点
- }else{
- if(this.next!=null){
- this.next.delete(this, data);//继续查找
- }
- }
- }
- }
- private Node root;//链表中的根节点
- public void addNode(String data){//增加节点
- Node newNode=new Node(data);
- if(root==null){
- root=newNode;
- }else{
- root.add(newNode);
- }
- }
- public void printNode(){//链表的输出
- if(root!=null){
- root.print();
- }
- }
- public boolean contains(String name){//判断元素是否存在
- return this.root.search(name);
- }
- public void deleteNode(String data){//链表删除节点
- if(this.contains(data)){
- if(this.root.data.equals(data)){//如果是根节点
- this.root=this.root.next;//修改根节点
- }else{
- this.root.next.delete(root,data);//把下一个节点的前节点和要删除的节点内容一起传入
- }
- }
- }
- }
版权声明:本文为博主原创文章,未经博主允许不得转载。
java实现单向链表的增、删、改、查的更多相关文章
- Java操作MongoDB:连接&增&删&改&查
1.连接 ①方式一 MongoClientOptions.Builder builder = MongoClientOptions.builder(); //可以通过builder做各种详细配置 Mo ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- iOS sqlite3 的基本使用(增 删 改 查)
iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...
- django ajax增 删 改 查
具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- python基础中的四大天王-增-删-改-查
列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...
- Java实现单向链表的增删改查
class List<T> { private class Node { private T data; private Node next; private Node(T data) { ...
随机推荐
- open调用过程
1. 首先传到vfs的do_sys_open,在open.c中. long do_sys_open(int dfd, const char __user *filename, int flags, u ...
- LA-5052 (暴力)
题意: 给[1,n]的两个排列,统计有多少个二元组(a,b)满足a是A的连续子序列,b是B的连续子序列,a,b中包含的数相同; 思路: 由于是连续的序列,且长度相同,可以枚举一个串的子串,找出这个子串 ...
- CentOS 6.5升级到CentOS 7
CentOS7 已经发布了,之前一直想在上面测试一下,一直没有机会,这次终于可以感受一下CentOS7了.一直使用CentOS6.5有一段时间了,但是由于它的内核版本依然停留在2.6.32,所以决定升 ...
- vue项目中的路径别名
每次写引入组件的路径,如果路径嵌套比较深,那么会比较麻烦,我们可以在webpack.base.conf.js,中设置路径的别名,默认webpack设置src的别名为@ 建议配置src下一级目录的别名, ...
- Sublime text 安装Package Control
Package Control 插件是一个方便 Sublime text 管理插件的插件,但因为 Sublime Text 3 更新了 Python 的函数,API不同了,导致基于 Python 开发 ...
- eclipse整合tomcat
首先确保jdk已经安装好 步骤1 获得服务器运行环境配置,Window/Preferences/Server/Runtime Environmen l步骤2 添加服务器 步骤3 选择服务器在硬盘的地址 ...
- gitbucket
github固然强大,但不怎么适合企业级的开发版本管理,原因相信大家都明白,首先在github上上传和拉取代码速度是比较慢的,再者,在Github上创建一个私有仓库是收费的,那么gitbucket是一 ...
- HDU 1270 小希的数表 (暴力枚举+数学)
题意:... 析:我们可以知道,a1+a2=b1,那么我们可以枚举a1,那么a2就有了,并且a1+a3=b2,所以a3就有了,我们再从把里面的剩下的数两两相加,并从b数组中去掉, 那么剩下的最小的就是 ...
- Codeforces - 1117E - Crisp String - 进制 - 交互
https://codeforces.com/problemset/problem/1117/E 就用abc表示数字来给每个数编码,编完直接问出移动的结果,反构造就行了,比C和D还简单. #inclu ...
- 51nod 1428【贪心】
思路: 就是先排序,然后对每个取最小的结束时间. #include <bits/stdc++.h> using namespace std; typedef long long LL; c ...