c语言中随机排序函数,利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。 用C语言编程...
匿名用戶
1級
2012-12-11 回答
#include
#include
#include
#include
#define N 20000
struct Student
{
int score;
struct Student *next;
};
//創建單向鍵表,返回鏈表表頭head
struct Student *CreatLink(struct Student *head ,int n)
{
int i;
struct Student *p1,*p2;
head=p1=(struct Student *)malloc(sizeof(struct Student));
if(p1 == NULL)
{
printf("Not enough memory to allocate buffer\n");
system("PAUSE");
exit(1); /* terminate program if out of memory */
}
p1->score = rand()%101;//產生隨機值
p1->next=NULL;
for(i=2;i<=n;i++)
{
p2=p1;
p1=(struct Student *)malloc(sizeof(struct Student));
if(p1 == NULL)
{
printf("Not enough memory to allocate buffer\n");
system("PAUSE");
exit(1); /* terminate program if out of memory */
}
p1->score = rand()%101;
p1->next=NULL;//最近產生的節點下一節點指向空
p2->next=p1;
}
return head;
}
//顯示循環鏈表的成員
void DisplayLink(struct Student *head)
{
struct Student *p;
p=head;
do
{
printf("%3d ", p->score);
p=p->next;
}while(p!=NULL); //p再次與head相等時,即所有成員都遍歷完成
printf("\n\n");
}
//選擇排序法排序鏈表
struct Student *SortLink(struct Student *head)
{
struct Student *head2=NULL,*p1,*p2,*p1lst,*p2lst,*q;
float MaxScore;
while(head!=NULL)
{
p2=p1=head;
MaxScore=head->score;
while(p1!=NULL)
{
if(p1->score > MaxScore)
{
MaxScore=p1->score;
p2lst=p1lst;
p2=p1;
}
p1lst=p1;
p1=p1->next;
}
if(p2==head)
{
head=head->next;
}
else
{
p2lst->next=p2->next;
}
if(head2==NULL)
{
head2=q=p2;
}
else
{
q->next=p2;
q=q->next;
}
}
q->next=NULL;
return head2;
}
int main(int argc, char *argv[])
{
struct Student *head;
srand((unsigned)time( NULL ));
head=CreatLink(head,N);
printf("The sorces random Generated :\n");
DisplayLink(head);
head=SortLink(head);
printf("After Sort The sorces are follows:\n");
DisplayLink(head);
free(head);
system("PAUSE");
return 0;
}
鏈表也是一種數據結構,看看這個程序滿足你的要求不
總結
以上是生活随笔為你收集整理的c语言中随机排序函数,利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。 用C语言编程...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中的随机函数
- 下一篇: Dell 笔记本鼠标莫名乱跑