首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

课程设计:多种方法排序

2013-07-01 
课程设计求救:多种方法排序啊,编程能力相当次啊,希望大家帮帮忙,大神来说应该不难,我对着书写了一部分代码

课程设计求救:多种方法排序
啊,编程能力相当次啊,希望大家帮帮忙,大神来说应该不难,我对着书写了一部分代码,功能实现的就不会了,希望大神们给看看,给一份代码,感激不尽啊!!

#include "iostream"
#include "time.h"
#include <windows.h>
using namespace std;

//表格显示函数 
void print_star()
{
printf("***********************************\n");
}
void print_line()
{
printf("+---------------------------------------------------+\n");
}
void print_table()
{
printf("|");
}

//大于1万的不确定个数,使用链表,随用岁取。 
struct node
{
int data;
node *next;
};

node *head=NULL;

void InsertNode(node* &head,int value)
{
if(head==NULL)
{
head=(node *)malloc(sizeof(node));
if(head==NULL)
{
printf("malloc failed");
return ;
}
else
{
head->data=value;
head->next=NULL;
}
}
else
{
node *temp=(node *)malloc(sizeof(node));
if(temp==NULL)
{
printf("malloc failed");
return ;
}
else
{
temp->data=value;
temp->next=head;
head=temp;
}
}
return  ;
}

void Insert(int n)
{
int IsPrinRan;
int flag_insert=1;
srand( (unsigned)time( NULL ) );         //初始化随机数
for(int i=0;i<n;i++)
InsertNode(head,rand());//将随机数插入链表 
node *p=(node *)malloc(sizeof(node));
p->next=head;
head=p;
print_star();
printf("是否显示产生的随机数?\n 1.显示 2.不显示\n");
print_star();
while(flag_insert)
{
//printf("正常运行到此处。");
scanf("%d",&IsPrinRan);
getchar();
if(IsPrinRan==1)
{
printf("所产生的随机数为: \n");
p=head->next;    //输出测试
while(p)
{
printf("%d  ",p->data);
p=p->next;
}
printf("\n");
flag_insert=0;
}
else if(IsPrinRan==2)
{
//printf("正常运行到此处。");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
       FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf("随机数已成功产生!\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
            FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
flag_insert=0;
}
else{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
       FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("输入字符有误!请重新输入:\n"); 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
            FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
flag_insert=1;
}
}

return ;
}


//+++++++++++++函数的定义++++++++++++++

//插入排序:crpx();
void crpx(node* &head)
{
struct node * p;
p=head;
p=p->next;
node* tmp;
tmp=p->next;
if(head!=NULL)
{
do{
printf("%d ",p->data);
if(p->data<tmp->data)
printf("yes!\n");
p=p->next;
}while(p!=NULL);
}
}




//==========main函数 ==============
 
int main(void)
{
long no;char IsExit=1;


//程序打开显示
print_line();
print_table();
printf("                 数据结构课程设计                  ");
print_table();
printf("\n");
print_line();
print_table();
printf("  题目:对至少1万随机数多种方法排序,并比较性能    ");
print_table(); 
printf("\n");
print_line();
printf("     院系       班级        姓名           学号      \n"); 
printf("+----------+-----------+----------+-----------------+\n");
print_table();
printf("  计科系  |   信息班  | 薛永伟   |  201103020002   ");
print_table(); 
printf("\n");
printf("+----------+-----------+----------+-----------------+\n");
printf("begin>>\n\n"); 
//随机数的产生 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
            FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
while(IsExit!='e')
{
//printf("正常运行到此处。");
int ch=1;
printf("需要多少个随机数?\n");
scanf("%ld",&no);
Insert(no);

//选择排序的方法
print_star();
 printf("选择排序的类型:\n");
cout<<"\n+========================================================+"<<endl; 
cout<<"|    1    直接插入排序          2    简单选择排序        |"<<endl;
cout<<"|    3    堆排序                4    冒泡排序            |"<<endl;
cout<<"|    5    快速排序              6    归并排序            |"<<endl;
cout<<"+--------------------+"<<endl;
cout<<"|             0    退出排序程序                          |"<<endl;
cout<<"=========================================================+"<<endl;

while(ch!=0)
{
cin>>ch;
if(ch==0)
{
system("PAUSE");
return 0;
}
switch(ch)

case 0:ch=0;break;
case 1:crpx(head);break;
/*case 2:xepx(head);break;
case 3:qppx(head);break;
case 4:kspx(head);break;
case 5:xzpx(head);break;
case 6:dpx(head);break;*/
default:cout<<"输入不正确,选择的范围是〈0,1,2,3,4,5,6〉,请重新输入: "<<endl; 
}
}

//是否退出系统
 printf("\n\n\n是否进行下一组实验?\n输入e退出系统(回车继续执行)\n");
 scanf("%c",&IsExit);
 print_star();
}
system("pause");
return 0;
}

C malloc

分享到:
[解决办法]
之前写过几种排序算法的几篇总结和C++实现,LZ要的几种都有,可以参考一下,下面是地址:
http://blog.csdn.net/left_la/article/details/8648133
http://blog.csdn.net/left_la/article/details/8648582
http://blog.csdn.net/left_la/article/details/8656425
[解决办法]
额,不过我之前实现的是数组排序,不是LZ需要的链表
[解决办法]
数据结构书中有代码的哦
运行效率统计,你就用运行时间吧,这有博客使用参考
http://blog.csdn.net/querdaizhi/article/details/6925156
[解决办法]
数据结构(C语言版)
Data Structures Using C

里面有完整的代码

热点排行