`
langzhe
  • 浏览: 286347 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

双链表插入自动排序

    博客分类:
  • c
 
阅读更多
今天开了一上午无聊的会议,利用一些时间想了一下,双列表插入自动排序问题。
这双链表还是花了我很多时间,早上测试结果,总是不对是因为我的list_node输出造成的,让我误以为打印结果不对。
  1 /* doublylinkedlist.c */                                                                                  
  2 #include <stdlib.h>      
  3 #include <stdio.h>
  4 #include "doublylinkedlist.h"
  5   
  6 struct node tailsentinel;
  7 struct node headsentinel = {0, NULL, &tailsentinel};
  8 struct node tailsentinel = {0, NULL, &headsentinel};
  9   
 10 static link head = &headsentinel;
 11 static link tail = &tailsentinel;
 12 



 56 void insert_sort(link p)
 57 {
 58     link node = head;
 59     for(;node->next != tail && node->next->item < p->item; node=node->next);
 60     p->next = node->next;
 61     p->pre = node;
 62     node->next->pre=p;
 63     node->next = p;
 64 }

 空列表情况:

 

非空是 插入情况:



 

  • 大小: 2.2 MB
  • 大小: 2.2 MB
0
0
分享到:
评论

相关推荐

    Qt-双链表的插入及排序

    本话题聚焦于在Qt环境中使用双链表进行数据操作,包括插入和排序。 双链表是一种数据结构,它包含一个节点类,每个节点都包含数据和两个指针,分别指向前一个节点和后一个节点。这种结构使得在链表中进行插入和删除...

    网上搜集的七种双向链表模板c++实现

    通过重载比较运算符(如&lt;,==等),可以创建排序的双向链表,方便进行查找和排序操作。 6. **迭代器支持的双向链表模板** C++标准库中的迭代器接口使得双向链表可以像容器一样使用,可以方便地与其他算法结合。...

    heap-management:堆管理方案(使用双链表和最先分配策略)

    本篇将深入探讨一种堆管理方案,即使用双链表配合最先分配策略。 首先,理解"堆"的概念。在计算机科学中,堆是一种特殊的树形数据结构,通常用来实现动态内存分配。堆内存是程序运行时动态分配的内存区域,由程序员...

    C语言双向链表实现根据使用频率安排元素位置的功能实例代码

    在C语言中,双向链表是一种非常重要的数据结构,它具有前向和后向...这涉及到链表的基本操作如初始化、插入、遍历以及排序。这样的功能可以广泛应用于音乐播放器、文档管理系统等需要根据使用情况自动优化顺序的场景。

    链表---链表大集合

    **合并链表**是链表操作的一个常见问题,通常出现在两个已排序的链表需要合并成一个新的有序链表时。这个问题可以通过迭代或递归的方式解决。迭代方法通常涉及两个指针,分别遍历两个链表,比较节点值并合并;而递归...

    数据结构大作业——解密

    学生可能需要编写程序来实现上述步骤,通过编程来自动化解密过程,这将涉及到编程语言、数据结构(如链表、栈、队列等)以及算法(如排序、搜索等)的应用。 总的来说,这个数据结构大作业不仅是对密码学原理的实际...

    Jukebox-using-java:使用java的双向链表数据结构的自动点唱机

    本项目“Jukebox-using-java”旨在利用Java实现一个自动点唱机,它基于双链表数据结构,这为数据管理提供了高效且灵活的方式。 一、双链表数据结构 双链表是一种高级数据结构,每个节点包含两个指针,一个指向前一...

    销售管理系统--链表

    同时,链表可以方便地按照特定条件(如购买频率、消费金额)进行排序和查找。 2. **商品管理**:商品信息也可以用链表存储,包括商品ID、名称、价格、库存量等。当库存发生变化或新增商品时,可以通过添加或修改...

    数据结构第二章线性表c++代码

    这使得双链表在插入、删除以及双向遍历上的效率更高。在C++中,可以使用自定义的结构体或类,增加前向和后向指针字段。双链表适用于需要频繁进行前后移动的操作,如撤销/重做功能。 在这些代码实现中,增删改查操作...

    数据结构实验报告+代码(链表 二叉树 图 字符串 数组 排序 队列 栈)

    6. **排序**:排序是将一组数据按特定顺序排列的过程,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。理解排序算法的时间复杂性和稳定性对于优化程序性能至关重要。 7. **队列**:...

    STL的链表应用.docx

    - **双链表实现**:STL的`list`容器内部使用双向链表,允许在链表的任何位置进行插入和删除操作,但不支持随机访问,即无法通过索引快速访问元素。 - **迭代器的增减**:由于是链表结构,迭代器的`++`操作会逐个...

    STL代码大全(容器,链表,栈,算法,排序等)

    例如,`std::vector`提供动态数组的功能,而`std::set`则是一种自动排序的集合。这些容器提供了丰富的操作接口,如`push_back`、`pop_back`、`insert`、`erase`等。 3. **映射(Map)** `map.cpp` 文件展示了`std:...

    数据结构实验之链表合并

    1. **链表的基本操作**:创建链表、插入节点、删除节点、遍历链表。这些操作是进行链表合并的基础,需要对链表的头节点、尾节点以及中间节点的操作有清晰理解。 2. **链表合并的条件**:通常,这个实验的目标是合并...

    华科自动化学院考研c语言复试题目.rar

    理解和操作链表是数据结构和算法的基础,常见的链表操作包括创建链表、插入节点、删除节点、查找节点、反转链表等。考生需要熟练掌握链表的表示方法、操作技巧,以及如何用C语言实现这些操作。 在复习过程中,考生...

    STL的链表应用.pdf

    除了上述功能外,`list`还提供了许多其他操作,如`insert`(在指定位置插入元素)、`erase`(删除元素)、`splice`(合并链表)等。这些函数允许我们灵活地管理和操作链表。 7. **性能考虑** 由于链表的元素不是...

    C++第一阶段实战任务书1

    实现双向链表需要包含插入数据、升序排序、查找节点和删除节点的方法。在C++中,这通常通过定义节点结构体并维护头尾指针来实现。排序可以使用经典的排序算法,如冒泡排序、插入排序或快速排序,取决于性能需求。 4...

    让我写了两个半小时的总结(2023.7.13写于信友队集训营)

    4. 集合(Set):集合是一种自动去重、自动排序的数据结构,能够快速查找、插入和删除元素。集合的操作包括 insert、erase、find 等。 5. 映射(Map):映射是一种键值对的数据结构,能够快速查找、插入和删除元素...

    Java 72道面试题和答案.docx

    LinkedHashSet继承自HashSet,通过添加双向链表保持元素插入的顺序。TreeSet则基于红黑树,确保元素排序有序。 3. **Map接口**: - Map接口不是Collection的子接口,它存储键值对,其中键是唯一的。HashMap是最...

    数据结构试验1(学生信息管理)

    在“实验一的第二种形式”中,可能是对链表操作的一种拓展或变体,可能包含了更复杂的数据结构设计,如双向链表、循环链表等,或者增加了对学生信息的排序、搜索等功能。具体实现细节则需要查看源代码或实验指导书来...

Global site tag (gtag.js) - Google Analytics