算法编程:已知线性表(a0,a1,…,an-1)中元素递增有序且按顺序存储于计算机内。要求用顺序表作为存储结构,设计算法完成:1)在表中查找数值为x的元素;2)若找到将其与后继元素位置相交换;3)若找不到将其插入表中并使表中元素仍递增有序。算法编程:已知线性表(a0,a1,…,an-1)中元素递增有序且按顺序存储于计算机内。要求用顺序表作为存储结构,设计算法完成:1)在表中查找数值为x的元素;2)若找到将其与后继元素位置相交换;3)若找不到将其插入表中并使表中元素仍递增有序。
#include<stdio.h>
#include<stdlib.h>
#define MAXSize 30
typedef int DataType;
typedef struct{
DataType data[MAXSize];
int length;
}Seqlist;
Seqlist CreateList(Seqlist L)
{
int i;
L.length=0;
for(i=1;i<11;i++){ //此处表中数据为1-10,如要变为1-20请改写为i<21,1-6则改为i<6
L.data[L.length]=i;
L.length++;
}
return L;
}
void ReverseList(Seqlist *L,int t)
{
DataType temp;
int i=1;
int flag=0;
while(flag==0&&i<L->length-1){
if(L->data[i]==t)
{
temp=L->data[i];
L->data[i]=L->data[i+1];
L->data[i+1]=temp;
flag=1;
}
i++;
}
while(flag==0){
if(t > L->data[9]){
L->length++;
L->data[L->length-1]=t;
flag=1;
}
if(t < L->data[0])
{
L->length++;
for(i=L->length-1;i>-1;i--){
temp=L->data[i+1];
L->data[i+1]=L->data[i];
L->data[i]=temp;
}
L->data[0]=t;
flag=1;
}
}
}
int main()
{
int i,num;
Seqlist Alist;
Alist=CreateList(Alist);
printf("请输入操作数:");
scanf("%d",&num);
ReverseList(&Alist,num);
printf("操作后的顺序表 :\n");
for(i=0;i<Alist.length;i++)
{
printf("%d ",Alist.data[i]);
}
printf("\n");
}