C++ 单链表快速排序
2015-09-21 23:10
483 查看
#include <string> #include <stdio.h> using namespace std; typedef struct Node { int data; Node * next; }Node; void swap(Node * A, Node *B) { cout<<"swap before :"<<A->data<<" "<<B->data<<endl; int temp= A->data; A->data=B->data; B->data=temp; cout<<"swap after :"<<A->data<<" "<<B->data<<endl; } Node* getSeperator(Node * begin, Node * end) { Node * p = begin; Node * q = begin->next; int key = p->data; while(q!=end) { if(q->data <key) { p=p->next; swap(p,q); } q=q->next; } swap(begin,p); return p; } void quicksort(Node * begin , Node * end) { cout<<"sort begin"; if(begin!=end) { Node* sep= getSeperator(begin,end); quicksort(begin,sep); quicksort(sep->next,end); } } Node * buildlist() { Node * node; string temp; int in; cin>>in; // 这里假设输入1000,构建链表结束! if (in==1000) { node=NULL; }else { node=new Node(); node->data=in; node->next=buildlist(); } return node; } int main() { Node * node= buildlist(); cout<<"before sort "; Node * temp=node; while (temp!=NULL) { cout<<temp->data<<endl; temp=temp->next; } quicksort(node,NULL); cout<<"after sort "; temp=node; while (temp!=NULL) { cout<<temp->data<<endl; temp=temp->next; } system("pause"); }
相关文章推荐
- c++设计模式-----代理模式proxy
- C语言程序初体验-第四课-第三题:温度转换
- C语言程序初体验-第四课-第二题:计算并联电阻R的阻值
- c++ const学习
- 超简单的c语言程序
- 关于C++中的类型转换操作符
- 项目23.6 前导0的数字
- Effective c++笔记:03 尽可能使用const
- C语言程序初体验-第四课-第一题:计算长方形的周长和面积
- 【C语言】1000~2000之间的闰年
- C语言中宏定义和函数的取舍
- 项目23.5 我的加班费
- 项目23.4三角公式求值
- c++函数参数类型-引用
- 项目23.3两段函数求值
- C++ 版本的 行为树的简单实现
- 【C++】派生类构造函数
- message_flood
- c++打印*组成的任意等腰三角形
- C++: byte和int的相互转化