C语言快速排序函数如下,运行结果空白,问题出在哪里?如何解决?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef struct{
int key;
int order;
}RedType;
typedef struct{
RedType *data;
int size;//可用长度
int length;//当前长度
}LinkList;
Status InitList(LinkList &L)//创建顺序表
{
if(!L.data) exit(OVERFLOW);
L.data=(RedType*)malloc(MAX*sizeof(RedType));
L.size=MAX;
L.length=0;
return 0;
}
Status ListWrite(LinkList &L)
{
scanf("%d",&L.length);
srand((unsigned int)time(NULL));
for(i=1;i<=L.length;i++)
{
L.data[i].order=i;
L.data[i].key=rand()%100+1;
}
}
Status ListPrint(LinkList L)
{
if(!L.data&&L.length==0) return ERROR;
int i;
for(i=1;i<=L.length;i++)
{
printf("%d号元素 %d\n",L.data[i].order,L.data[i].key);
}
}
int Partition(LinkList &L,int low,int high)//一次分割算法
{
L.data[0]=L.data[low];
int pivotkey=L.data[low].key;
while(low<high)
{
while(low<high&&L.data[high].key>=pivotkey)
--high;
L.data[low]=L.data[high];
while(low<high&&L.data[low].key<=pivotkey)
++low;
L.data[high]=L.data[low];
}
L.data[low]=L.data[0];
return low;
}
void QSort(LinkList &L,int low,int high)//递归快速排序
{
low=1;high=L.length;
int pivotloc;
if(low<high)
{
pivotloc=Partition(L,low,high);
QSort(L,low,pivotloc-1);
QSort(L,pivotloc+1,high);
}
}
int main(void)
{
LinkList L;
InitList(L);
ListWrite(L);
printf("创建顺序表如下\n");
ListPrint(L);
printf("快速排序如下\n");
int low,high;
QSort(L,low,high);
ListPrint(L);
return 0;
}