ListSort算法的原理:对原串从左到右扫描,每扫描到一个结点,就生成一个新结点,并使新结的数据域值等于当前扫描到的结点的数据域值,然后将新结点按序插入到新的链表中,并释放原结点,然后继续扫描,重复上述操作,直到扫描完原链表为止。此时就生成一个新的有序链表,原链表的内存空间被完全释放。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
#include<time.h>
typedef struct LNode//链表结点结构的定义
{
int data;
struct LNode *next;
}LNode,*LinkList;
int DisplayList(LinkList head)//输出链表中的数据域的值
{
if(head==NULL)
{
printf("链表为空!\n");
return 0;
}
LinkList p=head;
while(p->next!=NULL)
{
printf("%5d ->",p->data);
p=p->next;
}
printf("%5d",p->data); //输出最后一个数据
printf("\n\n");
return 0;
}
int CreateList(LinkList &head)//生成链表的函数定义
{
int i=0;
LinkList p=NULL,q=NULL;
head=NULL;
srand( (unsigned)time( NULL ) );
for(i=0;i<30;i++)
{
p=(LinkList)malloc(sizeof(