public class CycleLinkedListZH<E> {public static final  int ELEMENT_NOT_FOUND = -1;private int size;//定义全局变量(不在函数里的)不初始化默认初始值为0,局部变量则初始值随机//链表注意的无非那几个:插入删除情况分类,空指针错误private CycleLinkedListZH.Node<E> headNode;private static class Node<E> {E element;CycleLinkedListZH.Node<E> next = null;public Node(E element, CycleLinkedListZH.Node<E> next) {this.element = element;this.next = next;}public Node() {}}public void clear(){headNode = null;size = 0;}public int getSize(){return size;}public void isEmptyPrint(){if (headNode == null){System.out.println("Empty");}else{System.out.println("Not Empty");}}public E getElement(int index){CycleLinkedListZH.Node<E> node = indexSearchNode(index);return node.element;}public void containsPrint(E element){CycleLinkedListZH.Node<E> node = headNode;for(int i = 0;i < size ; i++){if (node.element == element){System.out.println("Contain");return;}node = node.next;}System.out.println("Not Contain");}public void add(int index , E element){CycleLinkedListZH.Node<E> node = new Node<>();node.element = element;if (size == 0){headNode = node;node.next = node;}else if (index == 0){CycleLinkedListZH.Node<E> lastnode = indexSearchNode(size - 1);lastnode.next = node;node.next = headNode;headNode = node;}else{CycleLinkedListZH.Node<E> nodePre = indexSearchNode(index-1);node.next = nodePre.next.next;nodePre.next = node;}size++;}public void remove(int index){if (index == 0){CycleLinkedListZH.Node<E> lastNode = indexSearchNode(size - 1);lastNode.next = lastNode.next.next;headNode = headNode.next;}else if (size == 0||size == 1){headNode = null;} else{CycleLinkedListZH.Node<E> nodePre = indexSearchNode(index-1);nodePre.next = nodePre.next.next;}size--;}public void add(E element){add(size,element);}private CycleLinkedListZH.Node<E> indexSearchNode (int index){CycleLinkedListZH.Node<E> node = headNode;for (int i = 0; i<index; i++){node = node.next;}return node;}public String toString() {StringBuilder string = new StringBuilder();string.append("size=").append(size).append("  [");CycleLinkedListZH.Node<E> node = headNode;for (int i = 0; i < size; i++) {if (i != 0) {string.append(", ");}string.append(node.element);node = node.next;}string.append("]");return string.toString();}}

2021-9-下旬 数据结构 - 线性表 - 循环链表 - java实现代码(复习用)相关推荐

  1. 2021 - 9 -下旬 数据结构- 线性表 -双端循环队列 - java实现

    //循环双端队列:Circle Double Ended Queue //本质是对动态数组的优化 //队头队尾都可以添加或删除元素 //相比于普通循环队列需要注意的点是在队头插入元素时的对front前 ...

  2. 2021 - 9 下旬 数据结构-线性表-循环队列-java实现代码

    //循环队列,本质就是用动态数组实现的,且出队入队时间复杂度均O(1)的队列 //相比普通队列,增设一个front指针,代表队头,代表下一个出队的元素 //循环队列的重点在于队头队尾的元素的下标的计算 ...

  3. 数据结构-线性表(严书代码实现)

    数据结构-线性表的顺序表示代码 //头文件内容实现 #ifndef SEQLIST_H_INCLUDED #define SEQLIST_H_INCLUDED #include<string.h ...

  4. 2021-9-下旬 数据结构-线性表-队列-java代码实现(复习用)

    话说...每次都用现成的类实现,是不是有点偷懒 //队列的本质也是线性表,特性为只在线性表首位端进行操作,为先进先出,和生活中排队的队列是一样的 //队列涉及到的操作主要是入队(enQueue)和出队 ...

  5. 2021-9-下旬 数据结构-线性表- 栈 -java代码实现(复习用)

    import java.util.ArrayList; import java.util.List; //栈的本质就是线性表,因为总在线性表的表尾端进行操作(出栈入栈),其重要特性为FILO先进后出 ...

  6. 2021-9-下旬 数据结构-线性表-链表-java代码实现(复习用)

    链表涉及到指针了,这里我还不了解java里对指针的隐藏,又由于以前学过C++里的指针,二者混淆,导致一开始非常蒙,出了很多问题,当然后来随着边写边查,基本都解决了. 顺便学习了一下java里的泛型 / ...

  7. 2021-9-下旬 数据结构-线性表-双向链表-java代码实现(复习用)

    public class DoubleLinkedListZH<E> {//调用方法参数是index的记得检测是否在合法范围(0~size-1)内,可以写一个arrangeCheck函数, ...

  8. 数据结构-线性表之带头结点的双向循环链表

    文章目录 前言 实现 (1)结构定义 (2)基本函数 (3)操作实现 测试 代码 前言 链表的类型有很多种(根据带头或不带头,循环或非循环等等),但是我们重点研究的只有两种,一种结构非常简单是无头单向 ...

  9. 数据结构—线性表(第三章)—基本知识点总结

    目录 1. 线性表的定义 2. 线性表的抽象数据类型 3.线性表的顺序存储结构 3.1 顺序存储定义 3.2 顺序存储方式 3.3 数据长度与线性表长度区别 3.4 地址计算方法 4. 顺序存储结构的 ...

最新文章

  1. 针对自己网站内容的搜索引擎代码
  2. 星空主题设计理念_敏捷协调,智慧运营:金蝶云·星空的产品设计理念与应用实践...
  3. qt 快速按行读取文件_这是知识点之Linux下分割文件并保留文件头
  4. 用python做数据分析流程图_使用Pyecharts进行高级数据可视化
  5. eclipse和Tomcat绑定
  6. linux 环境 RocketMQ 4.8.0 安装、部署控制台
  7. c语言选择结构程序if,C语言的选择结构 (if 语句 和 switch 语句)
  8. html中在哪儿使用div,使用javascript在html中使用div
  9. [C++11] 新特性总结
  10. npm 模块安装机制简介
  11. 一起来当网管(一)——Windows Server上的DHCP配置
  12. c语言什么意思 app 视频 新闻 视,C语言中csapp.h 是什么意思?
  13. 小学三年级计算机室使用计划,关于三年级信息技术教学计划(精选6篇)
  14. 【django】简易视频播放功能
  15. Linux网络虚拟化基石 network namespace
  16. attrib批量显示文件夹_怎样批量修改文件夹或文件的系统隐藏属性
  17. SOI round0 题解
  18. python分组统计数据_数据分组统计
  19. 新西兰java程序员_在新西兰做程序员是一种什么体验?解析新西兰计算机专业...
  20. java实验 月亮围绕地球转_月亮绕着地球转,地球围绕着太阳转,那么太阳围绕着什么转?...

热门文章

  1. STM32串口的部分映射与完全映射
  2. 美国计算机专业 学校推荐信,美国大学计算机专业推荐信范文
  3. [密码学] DES(二)
  4. Nginx负载均衡常用配置
  5. 【Web安全】实战sqlmap绕过WAF
  6. 管理员请注意 一条后门病毒攻击链正在针对服务器发起入侵
  7. python实现维吉尼亚加密法
  8. 进程线程001 进程线程结构体和KPCR
  9. python封装一个效率极高的 批量更新、插入合一的工具
  10. 【AC Saber】离散化