数据结构(java版)学习笔记(四)——线性表之循环链表
单向循环链表
PS:有阴影的结点是头结点
概念:
最后一个结点的链域值不为NULL,而是指向头结点


特点:
从表中的任意结点出发,都可以找到表中其他结点
循环条件
p==h
双向链表
概念
链表中的每一个结点有两个指针域,一个指向前趋,另外一个指向后继


双向循环链表
概念
双向链表中的头结点的前趋指针域指向了尾结点,尾结点的后继指针域指向了头结点,即可称为双向循环链表
判空条件
头结点的前趋指针与后继指针指向了本身
插入算法
在p结点前插入新结点

s.prior = p.prior;
p.prior.next = s;
s.next = p;
p.prior = s;
boolean insert(DulNode h,int i,char x){
DulNode p,s;
int j = 1;
p = h.next;//从第一个结点开始
//查找第i个结点,当p指向头结点h或p指向第i个结点结束
while(p!=h||j<i){
j++;
p = p.next;
}
if(j==i){
s = new DulNode();//初始化s结点
s.data =x;//存放数据在s结点
s.prior = p.prior;
p.prior.next =s;
s.next =p;
p.prior =s;
return true;
}else{
return false;
}
}
删除算法

p.prior.next = p.next;
p.next.prior = p.prior;
boolean delete(DulNode h,int i,char x){
DulNode p,s;
int j = 1;
p = h.next;//从第一个结点开始
//查找第i个结点,当p指向头结点h或p指向第i个结点结束
while(p!=h||j<i){
j++;
p = p.next;
}
if(j==i){
p.prior.next = p.next;
p.next.prior = p.prior;
return true;
}else{
return false;
}
}
数据结构(java版)学习笔记(四)——线性表之循环链表的更多相关文章
- 零拷贝详解 Java NIO学习笔记四(零拷贝详解)
转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...
- Java IO学习笔记四:Socket基础
作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...
- C语言数据结构基础学习笔记——基础线性表
线性表是指具有相同数据类型的n(n>=0)个数据元素的有限序列,它具有一个表头元素和一个表尾元素,并且每一个数据元素最多只有一个直接前驱和一个直接后继. 线性表的顺序存储也叫作顺序表,它的特性是 ...
- 数据结构学习笔记 <1> 线性表
一.线性表的抽象数据类型描述 类型名:线性表(List) 数据对象集:线性表示n(>=0)个元素构成的有序序列(a1,a2,……,an) 操作集:线性表L∈List, 整数i表示位置,元素X∈ ...
- Java设计模式学习笔记(四) 抽象工厂模式
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 抽象工厂模式概述 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问 ...
- Java基础学习笔记(四) - 认识final关键字、权限修饰符和内部类
一.final关键字 为什么要使用 final 关键字? 通过继承我们知道,子类可以重写父类的成员变量和方法.final 关键字可以用于修饰父类,父类成员变量和方法,使其内容不可以被更改. 1.被修饰 ...
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(四)之Operators
At the lowest level, data in Java is manipulated using operators Using Java Operators An operator ta ...
- Java基础学习笔记四 Java基础语法
数组 数组的需求 现在需要统计某公司员工的工资情况,例如计算平均工资.最高工资等.假设该公司有50名员工,用前面所学的知识完成,那么程序首先需要声明50个变量来分别记住每位员工的工资,这样做会显得很麻 ...
- java jvm学习笔记四(安全管理器)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一 ...
- 《Thinking in Java》学习笔记(四)
1.Java中的闭包与回调 闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域的信息.JAVA并不能显式地支持闭包,但是在JAVA中,闭包可以通过“接口+内部类”来实现,因为对于非静态 ...
随机推荐
- python伪装浏览器
def get_content(url): req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/53 ...
- python_day1_数据类型
数据类型: python基本数据类型有:int(整型),str(字符串),list[](列表),dict{}(字典),li()(元祖)bool(布尔) 注:还有一个Long(长整型),python3里 ...
- 关于wifi网络基本原理了解
对于esp32,其wifi功能还是十分强大的,为了能够良好的完成wifi的相关开发,这里需要计算机网络的结构体系进行大致的了解. 一.网络结构分层 对于计算机网络结构,大体上可以分为5层结构: 物理层 ...
- [转]决策树在Kaldi中如何使用
转自:http://blog.csdn.net/chenhoujiangsir/article/details/51613144 说明:本文是kaldi主页相关内容的翻译(http://kaldi-a ...
- Windows 系统 IP 和端口的相关检测命令
查看本机IP地址 查看自己电脑的ip,使用 ipconfig 命令 ipconfig 检测指定IP是否联通 检测某个ip是否可以连通,直接使用 ping 命令 ping 219.148.111.212 ...
- 递归打印目录层次(java版)
import java.io.File; public class Test { /** * * @param fileDir 根目录 * @param num 递归层次 */ private sta ...
- OpenCL科普及在ubuntu 16.04 LTS上的安装
OpenCL(Open Computing Language,开放计算语言)是一个为异构平台编写程序的框架,此异构平台可由CPU.GPU.DSP.FPGA或其他类型的处理器與硬體加速器所组成.Open ...
- python中除法的注意事项
使用python数据处理,代码如下: import numpy as np fs = 5 ts = np.arange(-1,1+1/fs,1/fs) 发现了这样一个错误: Traceback (mo ...
- Rolling Hash about the Rsync
今天看文献看到一个有趣的算法—Rolling Hash,这个算法可以更新在不同的machine上的两个“similar”的文件,也叫做rsync algorithm,rsync顾名思义:remote ...
- H5拖动火狐自动打开新标签
写在前面的话:<H5拖动火狐自动打开新标签>原因是为什么百度很多了我就不细说,本文章只说我自己的解决方法... 自定义数据里写个链接,如果火狐自动打开就跳到这个链接 这个页面就写一句话:关 ...