实验8顺序表奇数在左偶数在右
1、实验题目
实验8:顺序表奇数在左偶数在右。
2、实验目的与要求
(1)实验目的:
让同学熟悉顺序表中奇数和偶数的输出,实现奇数在左偶数在右
(2)实验要求:
1. 实现奇数和偶数的输出,最后奇数在左偶数在右
2. 实现程序;
3、实验步骤与源程序
3.1启动Visual Studio 2012,点击【文件】,【新建项目】,【已安装】,文件下的,【Visual C++】,【Win32 控制台应用程序】,设置名称和存储位置(如图1所示)。
(图1)
3.2如下图所示完成C++环境布置。
(图2)
(图3:在附加选项中选中空项目)
3.3、在【解决方案资源管理器】中依次完成common.h、seqlist.h、locate.cpp等文件的创建,区分头文件和源文件的位置。(如图4所示)
(图4)
- #inc#define ElemType int//定义宏
- #define MIXSIZE 100//此处宏定义常量表示线性表达到的最大长度
- typedef struct
- {
-
ElemType elem[MIXSIZE ];//线性表占用的数组空间
-
int last;//记录线性表中最后一个元素在数组elem中下角标占用的位置
- }SeqList;
(图5:common.h的代码截图)
- #inc#define ElemType int//定义宏
- #define MIXSIZE 100//此处宏定义常量表示线性表达到的最大长度
- typedef struct
- {
-
ElemType elem[MIXSIZE ];//线性表占用的数组空间
-
int last;//记录线性表中最后一个元素在数组elem中下角标占用的位置
- }SeqList;
(图6:seqlist.h的代码截图) - #include “common.h”
- #include “seqlist.h”
- void AdjustSqlist(SeqList *L)
- {
-
int i =0,j =L->last ;
-
int temp;
-
while (i<j)
-
{
-
while (L->elem [i]%2!=0)
-
i++;//从表的左半部分开始检测,若为奇数。则i+1,直到找到偶数为止
-
while (L->elem [j]%2==0)
-
j--;//从表的右半部分开始检测。若为偶数,则j-1,直到找到奇数为止
-
if(i<j)
-
{
-
temp =L->elem [i];
-
L->elem [i]=L->elem [j];
-
L->elem [j]=temp;
-
}
-
}
- }
- void main ()
- {
-
SeqList *l;
-
int r ;
-
int i;
-
l=(SeqList*)malloc(sizeof(SeqList ));
-
printf ("请输入线性表的长度:");
-
scanf ("%d",&r);
-
l->last =r-1;
-
printf("请输入线性表的各元素值:\n");
-
for(i=0;i<=l->last ;i++)
-
{
-
scanf ("%d",&l->elem [i]);
-
}
-
printf ("线性表元素为:\n");
-
for(i=0;i<=l->last ;i++)
-
{
-
printf ("%d ",l->elem [i]);
-
}
-
AdjustSqlist (l);
-
printf ("\n");
-
printf ("调整后的线性表的元素为:\n");
-
for(i=0;i<=l->last ;i++)
-
{
-
printf ("%d ",l->elem [i]);
-
}
- }
(图7:AdjustSqlist.cpp的代码截图) - 运行结果
(图8:奇数在左偶数在右运行结果)
5、测试数据与实验结果
(图9:测试数据与实验结果)
6、结果分析与实验体会
结果分析:已知n个整数,将n个整数的奇数放在前,偶数放在后,奇数部分与偶数部分都按升序排列输出。输入一个整数n,代表输入整数个数,n不会超过100。然后是n个待排序的整数,每个整数的取值范围是0-1000。输出排序后的n个数,其中奇数在前偶数在后,数与数之间用空格分开,注意第n个数后没有空格而是换行符。