链表排序

[html]  view plain copy
  1. // LinkSort2.cpp : 定义控制台应用程序的入口点。  
  2. //  
  3.   
  4. #include "stdafx.h"  
  5. #include <iostream>  
  6. using namespace std;  
  7.   
  8. struct Node  
  9. {  
  10.     int data;  
  11.     struct Node* next;  
  12. };  
  13.   
  14. Node* createLink(int a[],int len)  
  15. {  
  16.     Node* head,*p,*q;  
  17.     p=new Node();  
  18.     p->data=a[0];  
  19.     head=p;  
  20.     for (int i=1;i<len;i++)  
  21.     {  
  22.         q=new Node();  
  23.         q->data=a[i];  
  24.         p->next=q;  
  25.         p=q;  
  26.     }  
  27.     p->next=NULL;  
  28.     return head;  
  29. }  
  30.   
  31. void printfLink(Node* head)  
  32. {  
  33.     while (head)  
  34.     {  
  35.         cout<<head->data<<" ";  
  36.         head=head->next;  
  37.     }  
  38.     cout<<endl;  
  39.   
  40. }  
  41.   
  42.   
  43. Node* paixu(Node* head)  
  44. {  
  45.     Node  *p,*q;  
  46.     int   temp;  
  47.     q=head;  
  48.     while(q->next!=NULL)  
  49.     {  
  50.         p=head;  
  51.         while(p->next!=NULL)             //这个判断有冗余,待改进  
  52.         {         
  53.             if   (p->data   >   p->next->data)       //交换数值  
  54.             {  
  55.                 temp=p->data;  
  56.                 p->data=p->next->data;  
  57.                 p->next->data=temp;  
  58.             }  
  59.             p=p->next;  
  60.         }     
  61.         q=q->next;  
  62.     }  
  63.     return  head;     
  64. }  
  65.   
  66.   
  67.   
  68.   
  69. int _tmain(int argc, _TCHAR* argv[])  
  70. {  
  71.     int a[]={3,5,6,2,1,8,-1,-3,4};  
  72.     int len=sizeof(a)/sizeof(int);  
  73.     Node* head=createLink(a,len);  
  74.     //sortLink(head);  
  75.     printfLink(paixu(head));  
  76.   
  77.     system("pause");  
  78.     return 0;  
  79. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值