其实就是相当于选择排序算法:
还是直接看代码吧:
// LinkSort2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
struct Node
{
int data;
struct Node* next;
};
Node* createLink(int a[],int len)
{
Node* head,*p,*q;
p=new Node();
p->data=a[0];
head=p;
for (int i=1;i<len;i++)
{
q=new Node();
q->data=a[i];
p->next=q;
p=q;
}
p->next=NULL;
return head;
}
void printfLink(Node* head)
{
while (head)
{
cout<<head->data<<" ";
head=head->next;
}
cout<<endl;
}
Node* paixu(Node* head)
{
Node *p,*q;
int temp;
q=head;
while(q->next!=NULL)
{
p=head;
while(p->next!=NULL) //这个判断有冗余,待改进
{
if (p->data > p->next->data) //交换数值
{
temp=p->data;
p->data=p->next->data;
p->next->data=temp;
}
p=p->next;
}
q=q->next;
}
return head;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[]={3,5,6,2,1,8,-1,-3,4};
int len=sizeof(a)/sizeof(int);
Node* head=createLink(a,len);
//sortLink(head);
printfLink(paixu(head));
system("pause");
return 0;
}
// LinkSort2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
struct Node
{
int data;
struct Node* next;
};
Node* createLink(int a[],int len)
{
Node* head,*p,*q;
p=new Node();
p->data=a[0];
head=p;
for (int i=1;i<len;i++)
{
q=new Node();
q->data=a[i];
p->next=q;
p=q;
}
p->next=NULL;
return head;
}
void printfLink(Node* head)
{
while (head)
{
cout<<head->data<<" ";
head=head->next;
}
cout<<endl;
}
Node* paixu(Node* head)
{
Node *p,*q;
int temp;
q=head;
while(q->next!=NULL)
{
p=head;
while(p->next!=NULL) //这个判断有冗余,待改进
{
if (p->data > p->next->data) //交换数值
{
temp=p->data;
p->data=p->next->data;
p->next->data=temp;
}
p=p->next;
}
q=q->next;
}
return head;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[]={3,5,6,2,1,8,-1,-3,4};
int len=sizeof(a)/sizeof(int);
Node* head=createLink(a,len);
//sortLink(head);
printfLink(paixu(head));
system("pause");
return 0;
}