该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
int limit;
long randomnum[10001];
long temporary[10001];
typedef struct Node//声明结构体
{
int data;
struct Node *link;
} Node,Linklist;
numberconstruct()//产生随机数的函数 --产生2000个
//随机数据并将所产生的随机数存入到数组中去
{
int i;
int low,high;
printf("请输入随机数据上下限范围!\n");
printf("请输入下限数值:\nlow=");
scanf("%d",&low);
printf("请输入上限数值:\nhigh=");
scanf("%d",&high);
srand((unsigned)time(NULL));
for(i=0; i
{
int k;
k=rand()%(high-low+1)+low ;//随机产生小于10000的2000个数据
randomnum[i]=k;
printf("%d\t",k);//空格输出随机函数所产生的随机数据
}
printf("\n随机数输出完毕==============================================================\n");
}
foregonefile()//排序之前的随机数文件 --新建文件并将
//由numberconstruct函数产生的随机数据数组中的数据读到文件中
{
int i;
FILE *fi;
if((fi=fopen("D:\\随机数据原始文件.txt","w+"))==NULL) //判断文件打开状态
{
puts("\n打开/新建文件错误,请检查是否存在D磁盘分区。或者在源文件中修改文件存储路径以解决次问题\n");
}
else
{
puts("成功打开/新建文件\n");
puts("随机数据读取中 ...\n");
for(i=0; i
{
fprintf(fi,"%d\t",randomnum[i]);
}
printf("\n随机数据已成功存储到以下文件文件中 (D:\\随机数据原始文件.txt) \n");
//反馈随机数据的保存结果信息
}
fclose(fi);
}
Linklist *Creatlistvector()//创建单链表存储结构并将随机数据读到内存中
{
Linklist *head;
Node *p;
int k;
head=(Linklist*)malloc(sizeof(Node));
head->link=NULL;
for(k=0; k
{
p=(Node*)malloc(sizeof(Node));
p->data=randomnum[k];
p->link=head->link;
head->link=p;
}
return head;
}
void sort(Linklist *head)//对randomnmu数组中的数据排序操作 核心算法
{
Linklist *p,*q,*small;
int temp;
for(p=head->link; p->link!=NULL; p=p->link)
{
small=p;
for(q=p->link; q; q=q->link)
if(q->datadata)
small=q;
if(small!=p)
{
temp=p->data;
p->data=small->data;
small->data=temp;
}
}
}
void output(Linklist *head)//将排序后的数据输出并赋值到新的数组中并保存
{
int i=0;
Linklist *p;
p=head->link;
printf("\n数据排序后输出==============================================================\n");
do
{
printf("%d\t",p->data);
temporary[i]=p->data;
i++;
p=p->link;
}
while(p);
printf("\n排序数据输出完毕==============================================================\n");
}
numbersort()//数据保存 --将foregonefile文件中的数据排序后另存到新的文件中
{
FILE *fo;
int j;
if((fo=fopen("D:\\排序后数据文件.txt","w+"))==NULL)
{
printf("打开/新建文件错误,请检查是否存在D磁盘分区。或者在源文件中修改文件存储路径以解决次问题\n");
return;
}
for(j=0; j
fprintf(fo,"%d\t",temporary[j]);
printf("\n排序后的数据文件已成功储存到以下文件(D:\\排序后数据文件.txt)\n");
fclose(fo);
}
int testlength()//测试要产生的随机数的数量是否太大
{
if(limit>10001){
return 1;
}
}
int main()//定义主函数
{
printf("请输入所要产生随机数据的个数(注意该数必须小于10000)\nlimit=");
scanf("%d",&limit);
if(testlength()==1){
printf("输入范围错误。程序退出\n");
return 1;
}
Linklist *head;
numberconstruct();
foregonefile();
Creatlistvector();
head=Creatlistvector();
sort(head);
output(head);
numbersort();
getchar();
return 0;
}
这是源代码 跪求大神