双向链表排序 c++

#include <iostream>using namespace std;
//节点类型的定义
class Node
{
public:int data;Node *pre;Node *next;Node(int _data) : data(_data), pre(NULL), next(NULL){}
};void TwoWayBubble(Node *&L);
void CreateList(Node *&L, int n);
void Traverse(Node *L);void TwoWayBubble(Node *&L)
{Node *head = L;    //头Node *tail = NULL; //尾Node *p = L->next;// Node *q;bool exchange = true; //是否交换,并且最后根据是否发生交换来判断循环是否结束while (exchange){exchange = false;//大数沉底while (p->next != tail) //从左往右大数沉底{if (p->data > p->next->data){exchange = true; //发生了交换swap(p->data, p->next->data);}p = p->next; //后移}//小数起泡while (p->pre != head) //从右往左小数冒泡{if (p->data < p->pre->data){exchange = true; //发生了交换swap(p->data, p->pre->data);}p = p->pre; //前移}}
}void CreateList(Node *&L, int n)
{Node *p = L; //p指向最后一个节点int a;for (int i = 0; i < n; i++){cin >> a;Node *pNew = new Node(a); //分配一个新的节点空间;p->next = pNew;           //连接上上一个节点pNew->pre = p;            //新节点的前驱节点pNew->next = NULL;        //新节点的后继节点p = p->next;              //p更新}
}void Traverse(Node *L)
{Node *p = L->next;while (p != NULL){cout << p->data << " ";p = p->next;}cout << endl;
}int main()
{int n; //数据元素个数//头结点的创建Node *L = new Node(-1); //分配一个节点的空间;//前驱后继均为空L->next = NULL;L->pre = NULL;cin >> n;CreateList(L, n); //链表的构建cout << "before sort: " << endl;Traverse(L);TwoWayBubble(L); //双向冒泡cout << "after sort: " << endl;Traverse(L); //遍历链表return 0;
}

双向链表排序 c++相关推荐

  1. Bzoj 4548: 小奇的糖果(双向链表+排序+树状数组)

    以下内容来自ShallWe's Blog 题目 4548: 小奇的糖果 Description 有\(N\)个彩色糖果在平面上.小奇想在平面上取一条水平的线段,并拾起它上方或下方的所有糖果.求出最多能 ...

  2. java 双向链表排序_数据结构之(2)JAVA实现双向链表

    public class DoubleLinkedList { // 节点类Node private static class Node { Object value; Node prev = thi ...

  3. 面试字节跳动,我被怼了……

    出处:https://www.zhihu.com/question/31225105/answer/582508111 人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的. 我一听 ...

  4. Java类集框架 —— LinkedHashMap源码分析

    前言 我们知道HashMap底层是采用数组+单向线性链表/红黑树来实现的,HashMap在扩容或者链表与红黑树转换过程时可能会改变元素的位置和顺序.如果需要保存元素存入或访问的先后顺序,那就需要采用L ...

  5. 他人——2015实习招聘经验

    2015 CVTE 实习招聘经验谈(广州) 距2015年3月18日收到CVTE实习邀请函,已有4天之久.在经过了6轮节奏有些令人窒息的考察后,终于等来了这凯旋的号角.我硕士是控制科学与工程专业,报的岗 ...

  6. 关于java面试被虐的痛苦经历,你有体验过吗?

    今天就来吐槽字节跳动的面试...... 有种飘飘然的赶脚...... 人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的. 我一听, 呀?那我这岂不是就不优秀了吗,于是毅然决然和女 ...

  7. 你都有哪些面试时被虐的经历?

    挖出这个三年前的问题,就为吐槽今天字节跳动的面试. 人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的. 我一听, 呀?那我这岂不是就不优秀了吗,于是毅然决然和女朋友分了手. 人们 ...

  8. 面试字节跳动经历。。。

    原文:https://www.zhihu.com/question/31225105/answer/582508111 来源:知乎 人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡 ...

  9. 数据结构与算法 上机实验报告

    一.实验一 顺序表 ex1_1--基本题: 1)首先创建一个顺序表:从键盘读入一组整数(长度小于等于20),按输入顺序放入顺序表,输入以-1结束(注意-1不放到顺序表内):将创建好的顺序表元素依次输出 ...

  10. 春招:我居然三天就拿到了offer?

    1 回顾我的时间线 在本文的开头,先分享一下自己的春招经历吧: 各位掘友大家好,我是练习时长快一年的Android小蔡鸡,喜欢看源码,逛掘金,写技术文章...... 好了好,不开玩笑了OWO,本人大三 ...

最新文章

  1. [C#]判断是否是合法的IP4,IP6地址
  2. SVN 报错svn: E200014: Checksum mismatch for 。。。。。
  3. 微信小程序样式入门到精通(wxss)课程007-文本-text-align水平对齐
  4. iOS---iPad开发及iPad特有的特技
  5. udp java_Java实现Udp网络编程
  6. LeetCode Find the Duplicate Number 找重复出现的数(技巧)
  7. 用户体验改善案例_用户体验案例研究:建立更好的体验(重新设计“和平航空”网站)...
  8. Why Redis 4.0?
  9. 无连接可靠传输_这些RF连接器设计原则你应该多了解一下
  10. es6 字符串的 Iterator 接口
  11. java dbcursor_优化JAVA查询Mongodb数量过大,查询熟读慢的方法
  12. Java核心技术 卷II 高级特性 原书第9版pdf
  13. UE4导入字体 ttf
  14. 图解TCP/IP详解(史上最全)
  15. JavaScript从入门到精通(全)
  16. Fiddler抓取Chrome最新版HTTPS设置
  17. 控制工程中的数学建模(2)——二阶有源低通滤波器(之二)
  18. 怎么用python在淘宝抢单_淘宝抢单怎么做到秒抢 你需要知道的必杀步骤
  19. VCS仿真学习(5)Debugging with DVE
  20. 转载_纯Java代码批量去除图片文字水印

热门文章

  1. 高中计算机会考题,四川省高中信息技术会考资料及试题
  2. 论山寨手机与Android 【6】MTK手机的基带芯片
  3. 暴风影音5完整版(集成Real解码器) 增强去广告版
  4. x264码率控制参数详解
  5. Struts2通配符和动态方法调用
  6. MTK山寨机个性化DIY移植MRP初步探讨
  7. 服务器主板检测卡显示06,主板检测卡代码大全对照表
  8. WinISO5.3的注册码吧
  9. bootstrap table样式丢失
  10. 易简约个人产品中心网站源码html模板