`
absolute
  • 浏览: 190182 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

一个排序单向循环链表

 
阅读更多

 写道

public class RecurringQueue {

private Node head;
private Node tail;
private Node cursor;

public void add(Node node) {
if (head == null) {
head = node;
tail = node;
head.setNext(tail);
tail.setNext(head);
} else {
if (node.getPriority() <= head.getPriority()) {
node.setNext(head);
head = node;
tail.setNext(head);
return;
}

if (node.getPriority() >= tail.getPriority()) {
tail.setNext(node);
tail = node;
tail.setNext(head);
return;
}

Node iter = head;
while (iter != null) {
Node next = iter.getNext();
if (next.getPriority() >= node.getPriority()) {
node.setNext(next);
iter.setNext(node);
break;
}
iter = iter.getNext();
}
}
}

public Node next() {
if (cursor == null) {
cursor = head;
} else {
cursor = cursor.getNext();
}
return cursor;
}

class Node {
private String name;
private Integer priority;
private Node next;

public Node(String name, Integer priority) {
this.name = name;
this.priority = priority;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getPriority() {
return priority;
}

public void setPriority(Integer priority) {
this.priority = priority;
}

public Node getNext() {
return next;
}

public void setNext(Node next) {
this.next = next;
}
}
}
 
分享到:
评论

相关推荐

    单向循环链表-仿学生管理系统[详尽注释]

    单向循环链表是一种常见的数据结构,它在计算机科学中被广泛用于实现各种算法和数据管理,例如在本例中的学生管理系统。与普通单向链表不同,循环链表的最后一个节点指向第一个节点,形成一个闭合的环,使得遍历更加...

    循环链表,对应严书的循环链表一章 本文件仅包含单向的循环链表

    在单向循环链表中,最后一个节点的指针域指向链表的头节点,形成一个无限循环的效果。 在C++和C语言中,我们可以使用结构体来定义单向循环链表的节点。例如: ```c++ // C++ 定义节点结构体 struct Node { int ...

    C++ 排序双向循环链表代码

    在本文中,我们将深入探讨如何使用C++编程语言实现一个排序的双向循环链表。双向循环链表是一种数据结构,它允许我们从两个方向(前向和后向)遍历链表元素。与单向链表相比,双向链表提供了更大的灵活性,尤其是在...

    按照百十个位分拆链表,然后组合排序

    4. **合并链表:** 将排序后的各个分组链表按顺序合并成一个有序链表。 #### 具体实现 在代码示例中,可以看到作者使用了以下步骤实现上述功能: 1. **初始化与生成随机数:** - 定义了一个结构体 `struct ...

    单向链表 代码架构

    单向链表的每个节点包含两部分:数据和指向下一个节点的引用。 在给定的“单向链表 代码架构”中,我们可以期待找到以下几个关键知识点: 1. **链表节点结构**:通常,链表节点由数据域(用于存储数据)和指针域...

    双向循环链表C++实现

    双向循环链表中的每个节点除了包含数据之外,还包含两个指针,一个指向前一个节点(prev),另一个指向后一个节点(next)。在链表的末尾,最后一个节点的next指针指向第一个节点,而第一个节点的prev指针则指向最后...

    lianbiao.rar_单向链表

    单向链表还常常作为其他复杂数据结构的基础,例如双向链表、循环链表等。 在“数据结构实验2.doc”文档中,可能包含了通过编程实现单向链表插入和删除的具体代码和步骤分析。而“www.pudn.com.txt”文件可能是一个...

    数据结构:单向链表源码

    在计算机科学和编程领域,理解并能够实现单向链表的源码是至关重要的,因为它是构建更复杂数据结构(如双向链表、循环链表等)的基础。 在单向链表中,每个节点有两个部分:数据域和指针域。数据域存储实际的数据,...

    双向循环链表-仿学生管理系统【详尽注释】

    本篇文章将详细讲解基于C语言实现的双向循环链表,并结合一个仿学生管理系统的实例来阐述其应用。 双向循环链表是一种链式存储结构,与单向链表不同,它具有前后两个指针,使得节点可以双向移动。这种结构在进行...

    C语言单向链表的基本操作12个

    7. **合并两个有序链表**: 当有两个已排序的链表时,可以合并成一个新的有序链表。比较两个链表的头节点,将较小的一个作为新链表的头,然后递归处理剩余部分。 8. **链表长度**: 计算链表长度需要从头节点开始,...

    C语言实现单向链表的创建、插入,删除节点,和2个链表合并

    当一个链表为空时,将另一个链表的所有剩余节点添加到结果链表。 ```c Node* mergeSortedLists(Node* l1, Node* l2) { Node* result = NULL, *tail = NULL; while (l1 && l2) { if (l1-&gt;data &lt; l2-&gt;data) { if ...

    python数据结构与算法详解与源码

    4-12 单向循环链表删除元素复习及链表扩展 4-13 双向链表及添加元素 4-14 双向链表删除元素 五、排序与搜索 5-01 排序算法的稳定性 5-02 冒泡排序及实现 5-03 选择排序算法及实现 5-04 插入算法 5-05 插入...

    c++链表编程实现代码

    单向循环链表与单向链表类似,但最后一个节点的next指针不是NULL,而是指向链表的第一个节点,形成一个循环。这种链表在处理循环数据结构时特别有用。在C++中,创建一个循环链表需要在插入最后一个节点后特别设置其...

    C#,单向链表(Simply Linked List)快速排序(Quick Sort)算法与源代码

    各种数据结构、算法及实用的C#源代码.C#,单向链表(Simply Linked List)快速排序(Quick Sort)算法与源代码.单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部...

    c语言链表排序

    /* 单向链表的最后一个节点的next应该指向NULL */ } return first; } ``` #### 二、直接插入排序 **知识点概述:** 直接插入排序也是链表排序的一种常见方法,其基本思想是将链表中的每个节点插入到已排序的...

    单链表就地排序程序

    - 最后将尾部节点的`next`指针指向`head`,形成一个环形结构(虽然题目描述中提到的是单向链表,但从代码实现来看,最终形成了环形链表)。 #### 3. 单链表打印 - **打印函数**:通过一个循环遍历链表,输出每个...

    链表排序方法分析

    // 单向链表的最后一个节点的next应该指向NULL } head = first; return head; } ``` #### 二、直接插入排序 直接插入排序是另一种常见的排序算法,其基本思想是将链表中的每个元素插入到适当的位置,使链表...

    双向循环链表,最易读懂的插入,删除,查找,并且显示长度[参考].pdf

    与单向链表不同,双向循环链表中的每个节点不仅包含数据,还包含两个指针,一个指向前一个节点(`left`),另一个指向后一个节点(`next`)。这种设计使得从链表的任一端开始,都可以双向遍历。 在提供的代码中,...

    LinkedList:该项目提供了单向、双向和循环链表的示例

    循环链表是一种特殊的链表,最后一个节点的引用会指向链表的第一个节点,形成一个循环。这使得遍历可以无限进行,直到再次到达起始点。循环链表在处理循环数据结构,如日历或播放列表等场景时特别有用。在Java中,...

    链表(实验报告,指导书,源程序)

    循环链表是链表的一种变体,它的最后一个节点指针指向第一个节点,形成一个环状结构。循环链表在处理循环数据结构时特别有用,例如在实现队列(循环队列)或某些特定算法(如Floyd判圈法)时。 通过这份资源,学生...

Global site tag (gtag.js) - Google Analytics