美文网首页Java数据结构
Java 数据结构 循环链表

Java 数据结构 循环链表

作者: Sheldonlv | 来源:发表于2019-04-03 21:01 被阅读11次

Java 数据结构 循环链表

简介

循环链表与前两篇文章所提及的单向链表及双向链表也并没有太多不同的地方,只是其尾部结点的后驱再也不是指向null了,而是指向头部,请看以下的图片对比

结构图

单向链表
循环链表

代码实现(循环链表)

package linklist;

/**
 * 循环链表
 * Created by Sheldon on 2019/4/2.
 * Project Name: alstudy.
 * Package Name: linklist.
 */
// 循环链表数据结构
class Node{
    Data data;
    Node next;
}

public class LinkListLoop {

    Node head;

    /**
     * 追加结点
     * @param data
     * @return
     */
    public boolean addNode(Data data){
        Node temp = head;
        Node newNode;
        if ((newNode=new Node())==null){
            System.out.println("对象创建失败");
            return false;
        }else {
            newNode.data = data;
            if (head==null){
                head = newNode;
                newNode.next = head;
                return true;
            }
            while (temp.next!=head){
                temp = temp.next;
            }
            newNode.next = head;
            temp.next = newNode;
            return true;
        }
    }

    /**
     * 删除结点
     * @param key
     * @return
     */
    public boolean delNodeByKey(String key){
        Node temp = head;
        Node node = head;
        do {
            if (temp.data.key.equals(key)){
                node.next = temp.next;
                return true;
            }
            node = temp;
            temp = temp.next;
        }while (temp!=head);
        return false;
    }

    /**
     * 查找结点
     * @param key
     */
    public void findValueByKey(String key){
        Node temp = head;
        do {
            if (temp.data.key.equals(key)){
                System.out.println(temp.data.key+"->"+temp.data.name);
            }
            temp = temp.next;
        }while(temp!=head);
    }

    /**
     * 打印所有链表结点
     */
    public void showAllList(){
        Node temp = head;
        do{
            System.out.printf(temp.data.key+"->"+temp.data.name+" ");
            temp = temp.next;
        }while(temp!=head);
        System.out.println("");
    }

    public static void main(String[] args) {
        LinkListLoop listLoop = new LinkListLoop();
        // 添加结点
        listLoop.addNode(new Data("1","小明"));
        listLoop.addNode(new Data("2","小红"));
        listLoop.addNode(new Data("3","小黄"));
        // 显示所有结点
        listLoop.showAllList();
        // 删除结点
        listLoop.delNodeByKey("2");
        // 显示所有结点
        listLoop.showAllList();
        // 查找结点
        listLoop.findValueByKey("3");
    }
}

显示结果


运行结果

相关文章

  • 集合-LinkedList解析

    一、概要 Java中底层数据结构是链表、双端链表,Android中数据结构是双向循环链表 非线程安全数据结构,允许...

  • Java 数据结构 循环链表

    Java 数据结构 循环链表 简介 循环链表与前两篇文章所提及的单向链表及双向链表也并没有太多不同的地方,只是其尾...

  • 常见的数据结构

    常见的数据结构有: 数组 链表单链表、双向链表、循环链表、双向循环链表、静态链表 栈顺序栈、链式栈 队列普通队列、...

  • 数据结构 | 其二 链表

    冰河winner - 数据结构之链表 2.1 单向链表 数据结构(一) 单链表的实现-JAVA 2.2 双端链表 ...

  • 线性表-单向循环链表

    单向循环链表 单向循环链表示意图如下: 数据结构定义(同普通链表) 单向循环链表初始化与赋值 在上面循环遍历查找尾...

  • 数据结构笔记

    数据结构课程概览 ================== 1.顺序表 2.链表:单链表,单向循环链表,双链表...

  • 链表

    内容 链表数据结构 向链表添加元素 从链表移除元素 使用 LinkedList 表 双向链表 循环链表 链表数据结...

  • 数据结构与算法相关

    第二章 数据结构与算法相关 1.常用的数据结构有哪些? 数组、栈、队列、链表(单链表、双向链表、循环链表)、树、散...

  • Java数据结构算法(二)栈和队列

    本文旨作于收集整理使用!! 导航 Java数据结构算法(一)链表 Java数据结构算法(三)树 Java数据结构算...

  • 数据结构和算法(三)双向链表与双向循环链表的实现

    数据结构和算法(一)线性表实现 数据结构和算法(二)单向循环链表的创建插入删除实现 数据结构和算法(三)双向链表与...

网友评论

    本文标题:Java 数据结构 循环链表

    本文链接:https://www.haomeiwen.com/subject/fjytiqtx.html