快排-单链表实现
来源:互联网 发布:淘宝自动发货系统 编辑:程序博客网 时间:2024/06/07 03:06
/************************************************************************* > File Name: main.cpp > Author: > Mail: > Created Time: 三 7/26 18:43:04 2017 ************************************************************************/#include<iostream>#include<fstream>using namespace std;struct Node{ int val; Node *next; Node(int key,Node *pnext):val(key),next(pnext){}};Node *quick_sort_list(Node* head, Node* tail){ if(head==NULL||head->next==NULL||head==tail) return head; Node *p1 = head; Node *p2 = head->next; int key = head->val; while (p2 != NULL&&p2 != tail) { if (p2->val <= key) { p1 = p1->next; swap(p1->val, p2->val); } p2 = p2->next; } swap(head->val, p1->val); quick_sort_list(head, p1); quick_sort_list(p1->next, p2); return head;}int main(){ ifstream fin("data.txt"); int num; Node *head=new Node(0,NULL); Node *p=head; while(!fin.eof()) { fin>>num; cout<<"num is"<<num<<" "; p->next=new Node(num,NULL); p=p->next; } Node *q=head->next; while(q!=NULL) { cout<<q->val<<" "; q=q->next; } quick_sort_list(head->next, p->next); q=head->next; while(q!=NULL) { cout<<q->val<<" "; q=q->next; } return 0;}
总结:
上述单链表的实现,一定要加上结束条件:
if(head==NULL||head->next==NULL||head==tail) return head;
否则,运行出现segmentation fault。
出现segmentation fault用gdb调试,很难调!!!
阅读全文
0 0
- 快排-单链表实现
- 单链表实现快排
- 单链表的快排实现
- 单链表的快排实现
- 基于单链表的快排实现
- scheme实现快排
- 快排c++实现
- 快排简单实现
- Python实现快排
- 快排-java实现
- 实现的快排
- 快排实现;
- 快排实现
- 快排java实现
- javascript实现快排
- 快排:Swift实现
- 快排:Swift实现
- 快排--java实现
- 深入理解Linux内核-第四章笔记
- WP增加备案号超链接
- 机器视觉算法(图像增强)
- OpenGL 融合和透明
- [leetcode]82. Remove Duplicates from Sorted List II
- 快排-单链表实现
- 深入理解Linux内核-第五章笔记
- ubuntu14.04配置ssh登陆
- CodeForces
- 树莓派——安装Nginx服务器
- 编程思想
- 为什么要初始化 CSS 样式
- java 利用数组实现增删改查
- ubuntu配置samba