双向链表排序 c++
双向链表排序 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++相关推荐
- Bzoj 4548: 小奇的糖果(双向链表+排序+树状数组)
以下内容来自ShallWe's Blog 题目 4548: 小奇的糖果 Description 有\(N\)个彩色糖果在平面上.小奇想在平面上取一条水平的线段,并拾起它上方或下方的所有糖果.求出最多能 ...
- java 双向链表排序_数据结构之(2)JAVA实现双向链表
public class DoubleLinkedList { // 节点类Node private static class Node { Object value; Node prev = thi ...
- 面试字节跳动,我被怼了……
出处:https://www.zhihu.com/question/31225105/answer/582508111 人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的. 我一听 ...
- Java类集框架 —— LinkedHashMap源码分析
前言 我们知道HashMap底层是采用数组+单向线性链表/红黑树来实现的,HashMap在扩容或者链表与红黑树转换过程时可能会改变元素的位置和顺序.如果需要保存元素存入或访问的先后顺序,那就需要采用L ...
- 他人——2015实习招聘经验
2015 CVTE 实习招聘经验谈(广州) 距2015年3月18日收到CVTE实习邀请函,已有4天之久.在经过了6轮节奏有些令人窒息的考察后,终于等来了这凯旋的号角.我硕士是控制科学与工程专业,报的岗 ...
- 关于java面试被虐的痛苦经历,你有体验过吗?
今天就来吐槽字节跳动的面试...... 有种飘飘然的赶脚...... 人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的. 我一听, 呀?那我这岂不是就不优秀了吗,于是毅然决然和女 ...
- 你都有哪些面试时被虐的经历?
挖出这个三年前的问题,就为吐槽今天字节跳动的面试. 人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的. 我一听, 呀?那我这岂不是就不优秀了吗,于是毅然决然和女朋友分了手. 人们 ...
- 面试字节跳动经历。。。
原文:https://www.zhihu.com/question/31225105/answer/582508111 来源:知乎 人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡 ...
- 数据结构与算法 上机实验报告
一.实验一 顺序表 ex1_1--基本题: 1)首先创建一个顺序表:从键盘读入一组整数(长度小于等于20),按输入顺序放入顺序表,输入以-1结束(注意-1不放到顺序表内):将创建好的顺序表元素依次输出 ...
- 春招:我居然三天就拿到了offer?
1 回顾我的时间线 在本文的开头,先分享一下自己的春招经历吧: 各位掘友大家好,我是练习时长快一年的Android小蔡鸡,喜欢看源码,逛掘金,写技术文章...... 好了好,不开玩笑了OWO,本人大三 ...
最新文章
- [C#]判断是否是合法的IP4,IP6地址
- SVN 报错svn: E200014: Checksum mismatch for 。。。。。
- 微信小程序样式入门到精通(wxss)课程007-文本-text-align水平对齐
- iOS---iPad开发及iPad特有的特技
- udp java_Java实现Udp网络编程
- LeetCode Find the Duplicate Number 找重复出现的数(技巧)
- 用户体验改善案例_用户体验案例研究:建立更好的体验(重新设计“和平航空”网站)...
- Why Redis 4.0?
- 无连接可靠传输_这些RF连接器设计原则你应该多了解一下
- es6 字符串的 Iterator 接口
- java dbcursor_优化JAVA查询Mongodb数量过大,查询熟读慢的方法
- Java核心技术 卷II 高级特性 原书第9版pdf
- UE4导入字体 ttf
- 图解TCP/IP详解(史上最全)
- JavaScript从入门到精通(全)
- Fiddler抓取Chrome最新版HTTPS设置
- 控制工程中的数学建模(2)——二阶有源低通滤波器(之二)
- 怎么用python在淘宝抢单_淘宝抢单怎么做到秒抢 你需要知道的必杀步骤
- VCS仿真学习(5)Debugging with DVE
- 转载_纯Java代码批量去除图片文字水印