网站大量收购独家精品文档,联系QQ:2885784924

数据结构实验四:顺序表的排序实验.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验四:顺序表的排序实验

实验题目 实验四:顺序表的排序实验 设计算法将一个整型数组调整为这样的数组:所有3的倍数在最左边,所有除以3余1的数在中间,而所有除以3余2的数在最左边。要求算法的时间尽可能少。 问题分析 本程序要求实现将一个整型数组调整为这样的数组:所有3的倍数在最左边,所有除以3余1的数在中间,而所有除以3余2的数在最左边。根据题目要求,可以用顺序表来实现。程序所能达到的是将顺序表中的元素根据被3整除的情况有规则的输出。 数据的输入形式和输入值的范围:输入的顺序表的个数为大于0且小于顺序表最大长度的整型数据,而顺序表的元素为整型。 结果的输出形式:程序正确运行后,应输出顺序表中的元素是:所有3的倍数在最左边,所有除以3余1的数在中间,而所有除以3余2的数在最左边。 测试数据: 顺序表长度i:4,顺序表元素:33,45,78,99 顺序表长度i:5,顺序表元素:-12,-4,10,39,93 顺序表长度i:6,顺序表元素:25,43,8,99,45,32 概要设计 1,为了实现以上程序功能,需要: 建立一个含有i个元素的顺序表 对顺序表的元素进行分区,将所有3的倍数在最左边,所有除以3余1的数在中间,而所有除以3余2的数在最左边。 在屏幕上输出分区后的顺序表元素。 2,本程序包含3个函数 主函数main() 顺序表输入函数sqlset() 顺序表分区函数dispart() 详细设计 顺序表类型定义: typedef struct{ int r[list_size+1]; int length,a,b,c; int x[list_size+1]; //用于存放能被3整除的数 int y[list_size+1]; //用于存放除以3余1的数 int z[list_size+1]; //用于存放除以3余2的数 }recordlist; 2,顺序表元素函数伪代码: recordlist *sqlset(){ recordlist *L; int i; L-length=-1; //初始化顺序表长度 L-a=0; //初始化存放能被3整除的顺序表的长度 L-b=0; L-c=0; scanf(%d,i); for(L-length=0;L-lengthi;L-length++) scanf(%d,L-r[L-length]); } 3,分块函数伪代码: recordlist *dispart(recordlist *L,int m){ // m为顺序表的长度 int i; for(i=0;im;i++){ if(L-r[i]%3==0){ L-x[L-a]=L-r[i]; L-a++;} else if(L-r[i]%3==1) { L-y[L-b]=L-r[i]; L-b++;} else { L-z[L-c]=L-r[i]; L-c++;} } for(i=0;iL-a;i++) printf(%d ,L-x[i]); printf(\t\t); for(i=0;iL-b;i++) printf(%d ,L-y[i]); printf(\t\t); for(i=0;iL-c;i++) printf(%d ,L-z[i]); printf(\n); return L; } 源程序 #include stdio.h #include malloc.h #define list_size 100 typedef struct{ int r[list_size+1]; int length,a,b,c; int x[list_size+1]; //用于存放能被3整除的数 int y[list_size+1]; //用于存放除以3余1的数 int z[list_size+1]; //用于存放除以3余2的数 }recordlist; recordlist *sqlset(){ //顺序表元素函数 recordlist *L; //定义一个recordlist型指针变量L int i; L=(recordlist*)malloc(sizeof(recordlist)); //为顺序表申请空间 L-length=-1; //初始化顺序表长度 L-a=0; //初始化存放能被3整除的顺序表的长度 L-b=0; //初始化存放除以3余1的顺序表的长度 L-c=0; //初始化存放除以3余2的顺序表的长度 printf(请输入顺序表的长度i(ilist_size)

文档评论(0)

cbf96793 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档