改无序单链表为有序
实现代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct LinkNode{
int data;
struct LinkNode *next;
} LinkNode;
void CreateLinkNode(LinkNode *&L,int a[],int n){
LinkNode *p,*L1;
int i;
L=(LinkNode*)malloc(sizeof(LinkNode));
L->next=NULL;
L1=L;
for(i=0;i<n;++i){
p=(LinkNode*)malloc(sizeof(LinkNode));
p->data=a[i];
L1->next=p;
L1=p;
}
L1->next=NULL;
}
void Sort(LinkNode *&L){
LinkNode *p,*pre,*q;
p=L->next->next;
L->next->next=NULL;
while(p!=NULL){
q=p->next;
pre=L;
while(pre->next!=NULL&&pre->next->data<p->data){
pre=pre->next;
}
p->next=pre->next;
pre->next=p;
p=q;
}
}
void Show(LinkNode *&L){
int i;
while(L->next!=NULL){
printf("%d ",L->next->data);
L=L->next;
}
}
int main(int argc, char *argv[])
{
struct LinkNode *L;
int a[8]={100,23,3,44,5,6,7,8};
CreateLinkNode(L,a,8);
Sort(L);
Show(L);
return 0;
}
输出结果:
3 5 6 7 8 23 44 100 请按任意键继续. . .