要求从键盘输入10个数,在屏幕上输出排序结果。 起泡法排序。 选择法排序。2种方法求解!!

 我来答
湘殤湘d湘e天涯
2010-11-14 · TA获得超过6348个赞
知道大有可为答主
回答量:1174
采纳率:0%
帮助的人:1828万
展开全部
、一元稀疏多项式相加
设计一个一元多项式加法器。实现: (1)输入并建立多项式; (2)两个多项式相加; (3)输出多项式:n, c1, e1, c2, e2, …cn , en, 其中,n是多项式项数,ci和ei分别是第 i 项的系数和指数,序列按指数降序排列。
2、表达式求值
设计一个程序,使用栈求解算术表达式。
3、赫夫曼编码/解码
设计一个利用赫夫曼算法的编码和译码系统,重复地显示并处理编码/解码功能,直到选择退出为止。
4、矩阵快速转置和乘法
实现稀疏矩阵的快速转置和乘法的实现。
5、图的遍历
实现图的广度,深度优先遍历。
6、构造可以使n个城市连接的最小生成树
给定一个地区的n个城市间的距离网,采用邻接矩阵表示,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。
7、拓扑排序
用邻接表构造图 然后进行拓扑排序,输出拓扑排序序列
8、内部排序算法的实现
输入N个随机整数,对这些数进行多种方法进行排序。
至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起
泡排序、快速排序、选择排序、堆排序、归并排序)。
!!!!!!!!!!! 选择上面的一个题目解决 下面是要求!!!!!!!!!!!
一 需求分析:
在该部分中根据设计题目的要求,充分地分析和理解问题,叙述系统的功能要求,明确问题要求做什么?以及限制条件是什么?
1.1问题描述
1.2基本要求
(1) 输入的形式和输入值的范围;
(2) 输出的形式;
(3) 程序所能达到的功能;
二 概要设计
说明本程序中用到的所有抽象数据类型的定义。主程序的流程以及各程序模块之间的层次(调用)关系。
1、 数据结构
2、 程序模块
3、各模块之间的调用关系以及算法设计
三 详细设计
实现概要设计中定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);写出出函数和过程的调用关系.
四 测试与分析
测试数据,输出测试的结果,这里的测试数据应该完整和严格。并对结果进行分析。
五 总结
总结可以包括 : 课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。
六附录:源程序清单
非常着急要 在线等答案 后天就交了 各位高手帮帮忙吧 问题补充:要C语言版的 别的不急 先给个源程序 明天下午要用了 急急急急急急急急急急急急急急急!!! 提问者: 五界圣灵 - 三级 最佳答案 1、一元稀疏多项式相加 详细设计 4.1 程序头的设计: #includestdio.h #includemalloc.h typedef struct pnode {int coef;/*系数 */ int exp;/*指数 */ struct pnode *next;/*下一个指针*/ }pnode; 4.2 用头插法生成一个多项式,系数和指数输入0时退出输入 pnode * creat() {int m,n; pnode *head,*rear,*s; /*head为头指针,rear和s为临时指针*/ head=(pnode *)malloc(sizeof(pnode)); rear=head; /*指向头*/ printf(input coef:);/*输入系数*/ scanf(%d,n); printf(input exp:);/*输入指数*/ scanf(%d,m); while(n!=0)/*输入0就退出*/ {s=(pnode *)malloc(sizeof(pnode)); s-coef=n; s-exp=m; s-next=NULL; rear-next=s;/*头插法*/ rear=s; printf(input coef:);/*输入系数*/ scanf(%d,n); printf(input exp:);/*输入指数*/ scanf(%d,m); } head=head-next;/*第一个头没有用到*/ return head; } 4.3 显示一个多项式 void display(pnode *head) {pnode *p;int one_time=1; p=head; while(p!=NULL)/*不为空的话*/ { if(one_time==1) {if(p-exp==0)/*如果指数为0的话,直接输出系数*/ printf(%d,p-coef); /*如果系数是正的话前面就要加+号*/ else if(p-coef==1||p-coef==-1) printf(x^%d,p-exp);/*如果系数是1的话就直接输出+x*/ /*如果系数是-1的话就直接输出-x号*/ else if(p-coef0)/*如果系数是大于0的话就输出+系数x^指数的形式*/ printf(%dx^%d,p-coef,p-exp); else if(p-coef0)/*如果系数是小于0的话就输出系数x^指数的形式*/ printf(%dx^%d,p-coef,p-exp); one_time=0; } else{ if(p-exp==0)/*如果指数为0的话,直接输出系数*/ {if(p-coef0) printf(+%d,p-coef); /*如果系数是正的话前面就要加+号*/ } else if(p-coef==1) printf(+x^%d,p-exp); else if(p-coef==-1) printf(x^%d,p-exp);/*如果系数是1的话就直接输出+x号*/ else if(p-coef0)/*如果系数是大于0的话就输出+系数x^指数的形式*/ printf(+%dx^%d,p-coef,p-exp); else if(p-coef0)/*如果系数是小于0的话就输出系数x^指数的形式*/ printf(%dx^%d,p-coef,p-exp); } p=p-next;/*指向下一个指针*/ } printf(\n); 4.4 两个多项式的加法运算 pnode * add(pnode *heada,pnode *headb) {pnode *headc,*p,*q,*s,*r; /*headc为头指针,r,s为临时指针,p指向第1个多项式并向右移动,q指向第2个多项式并并向右移动*/ int x; /*x为系数的求和*/ p=heada; /*指向第一个多项式的头*/ q=headb; /*指向第二个多项式的头*/ headc=(pnode *)malloc(sizeof(pnode)); r=headc; /*开辟空间*/ while(p!=NULLq!=NULL) /*2个多项式的某一项都不为空时*/ {if(p-exp==q-exp)/*指数相等的话*/ {x=p-coef+q-coef;/*系数就应该相加*/ if(x!=0)/*相加的和不为0的话*/ {s=(pnode *)malloc(sizeof(pnode));/*用头插法建立一个新的节点*/ s-coef=x; s-exp=p-exp; r-next=s; r=s; } q=q-next;p=p-next; /*2个多项式都向右移*/ } else if(p-expq-exp)/*p的系数小于q的系数的话,就应该复制q接点到多项式中*/ {s=(pnode *)malloc(sizeof(pnode)); s-coef=q-coef; s-exp=q-exp; r-next=s; r=s; q=q-next;/*q向右移动*/ } else/*p的系数大于q的系数的话,就应该复制p接点到多项式中*/ {s=(pnode *)malloc(sizeof(pnode)); s-coef=p-coef; s-exp=p-exp; r-next=s; r=s; p=p-next;/*p向右移动*/ } } 当第2个多项式空,第1个数不为空时,将第一个数剩下的全用新节点产生 while(p!=NULL) {s=(pnode *)malloc(sizeof(pnode)); s-coef=p-coef; s-exp=p-exp; r-next=s; r=s; p=p-next; } 当第1个多项式空,第1个数不为空时,将第2个数剩下的全用新节点产生 while(q!=NULL) {s=(pnode *)malloc(sizeof(pnode)); s-coef=q-coef; s-exp=q-exp; r-next=s; r=s; q=q-next; } r-next=NULL; /*最后指向空*/ headc=headc-next;/*第一个头没有用到*/ return headc;/*返回头接点*/ 4.5 两个多项式的减法运算,和加法类似,不同的地方已经注释 pnode * sub(pnode *heada,pnode *headb) {pnode *headc,*p,*q,*s,*r; int x; p=heada;q=headb; headc=(pnode *)malloc(sizeof(pnode)); r=headc; while(p!=NULLq!=NULL) {if(p-exp==q-exp) {x=p-coef-q-coef;/*系数相减*/ if(x!=0) {s=(pnode *)malloc(sizeof(pnode)); s-coef=x; s-exp=p-exp; r-next=s; r=s; } q=q-next;p=p-next; } else if(p-expq-exp)/*p的系数小于q的系数的话*/ {s=(pnode *)malloc(sizeof(pnode)); s-coef=-q-coef;/*建立的接点的系数为原来的相反数*/ s-exp=q-exp; r-next=s; r=s; q=q-next; } else {s=(pnode *)malloc(sizeof(pnode)); s-coef=p-coef; s-exp=p-exp; r-next=s; r=s; p=p-next; } } while(p!=NULL) {s=(pnode *)malloc(sizeof(pnode)); s-coef=p-coef; s-exp=p-exp; r-next=s; r=s; p=p-next; } while(q!=NULL) {s=(pnode *)malloc(sizeof(pnode)); s-coef=-q-coef;/*建立的接点的系数为原来的相反数*/ s-exp=q-exp; r-next=s; r=s; q=q-next; } r-next=NULL; headc=headc-next; return headc; 4.6 界面设计: printf(\n ****************************************\n); printf(\n ************** 03 Computer *************\n); printf(\n ******** Class:two **** Num:34 *********\n); printf(\n *********** Name: xie pan **********\n); printf(\n ****************************************\n); printf(\n --------------1: add -------------\n); printf(\n --------------2: sub -------------\n); printf(\n --------------3: exit ------------\n); printf(\n ****************************************\n); 4.7 连接程序: case 1:add_main();break;/*加法*/ case 2:sub_main();break;/*减法*/ case 3:break;/*退出*/
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式