一、实验内容
1.输入一组整型元素序列,建立顺序表。
2.遍历该顺序表。
3.在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。
4.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。
5.判断该顺序表中元素是否对称,对称返回1,否则返回0。
6.输入整型元素序列利用有序表插入算法建立一个有序表。
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXSIZE 1000
typedef int ElemType;//命名int类型为ElemType
typedef struct//定义结构体类型—SqList
{
ElemType elem[MAXSIZE];//整型数组elem[]
int length;//数组长度
}SqList;
void CreatSqList(SqList *L)//创建随机数的函数
{
int num,i;//计数器i,总个数num
srand((unsigned)time(NULL));//srand初始化随机数 用于设置供rand使用的随机种子
//通常直接设置srand((unsigned)time(0)或者代码中的NULL
//unsigned无符号类型
printf("请输入你要生成多少个随机数:");
scanf("%d",&num);//给总个数num赋值
for(i=0;i<num;i++)//循环num次
L->elem[i]=rand()%100+1;//把结点里的整型数组里的单个赋值
//把rand随机生成的值除余100加上1
L->length=num;
}
void PrintSqList(SqList L)
{
int i;
for(i=0;i<L.length;i++)
printf("%d ",L.elem[i]);
printf("\n");
}
int FoundValue(SqList L,ElemType val)
{
int i;
for(i=0;i<L.length;i++)
if(L.elem[i]==val)
return 1;
return 0;//分析:从顺序表表头开始扫描,当数据元素为偶数时就从该数开始往后查找,
//一旦找到奇数,则将该偶数与此奇数交换。顺序表中所有数据全部扫描结束后,所有奇数就排列
}
void ChangeVal(SqList *L)
{
int i,j,temp;
for(i=0;i<L->length;i++)
{
if(L->elem[i]%2==0)
{
for(j=i+1;j<L->length;j++)
{
if(L->elem[j]%2!=0)
{
temp=L->elem[i];
L->elem[i]=L->elem[j];
L->elem[j]=temp;
break;
}
}
if(j==L->length) break;
}
}
}
int main()
{
ElemType in;//整数类型变量in
SqList L;//结构体类型L
CreatSqList(&L);//把L的地址发送到创建函数里面
PrintSqList(L);
printf("奇数排在偶数前面后:\n");
ChangeVal(&L);
PrintSqList(L);
printf("请输入你要查找的值:");
scanf("%d",&in);
if(FoundValue(L,in))
printf("查找成功!\n");
else
printf("查找失败!\n");
return 0;
}
实验结果:
分析:使用简单的顺序表实现,用for循环给数组单个内容赋值,然后再循环从头到尾遍历,查找就是遍历中的比对。