【正确答案】(1)
#define MAXSIZE 100
typedef struct
{ int len;
int data[MAXSIZE];
}SEQUENLIST; /*顺序表结构类型定义*/
void rev(SEQUENLIST*q) /*逆置顺序表元素算法*/
{ int i,j,t;
for(i=0,j=q->len-1;i<q->len/2;i++,j--)
{t=q->data[i];
q->data[i]=q->data[j];
q->data[j]=t;
}
}
main() /*主函数*/
{ int i;
SEQUENLIST a;
a.len=7; /*假设顺序表中有7个元素*/
for(i=0;i<a.len;i++) /*输入顺序表元素*/
scanf("/%d",&a.data[i]);
rev(&a); /*调用逆置顺序表元素函数*/
for(i=0;i<a.len;i++) /*逆置后顺序表元素显示*/
printf("/%4d",a.data[i]);
}
(2)
#define MAXSIZE 100
typedef struct
{ int len;
int data[MAXSIZE];
} SEQUENLIST;
SEQUENLIST p;
void sort(SEQUENLIST*q) /*采用冒泡排序的方法对数组进行降序排序*/
{ int i,j,t;
for(i=0;i<q->len-1;i++)
for(j=i+1;j<q->len;j++)
if(q->data[i]<q->data[j])
{t=q->data[i];q->data[i]=q->data[j];q->data[j]=t;}
}
main()
{ int i;
p.len=7;
for(i=0;i<p.len;i++)
scanf("/%d",&p.data[i]);
sort(&p);
for(i=0;i<2;i++) /*输出数组中的前两个元素值*/
printf("/%4d",p.data[i]);
}
(3)
#define MAXSIZE 100
typedef struct
{ int len;
int data[MAXSIZE];
}SEQUENLIST; /*顺序表结构类型定义*/
void move(SEQUENLIST*q,int k) /*结点循环右移k位运算的算法*/
{ int i,j=0,t;
while(j<k)
{t=q->data[q->len-1]; /*把最后一个元素放在单元t中*/
for(i=q->len-2;i>=0;i--) /*从倒数第二个元素开始依次后移*/
q->data[i+1]=q->data[i];
q->data[0]=t; /*把最后一个元素放在第一个元素位置*/
j++;
}
}
main()
{ int i,k;
SEQUENLIST a;
a.len=5; /*假设顺序表中有5个元素*/
for(i=0;i<a.len;i++) /*输入顺序表元素*/
scanf("/%d",&a.data[i]);
scanf("/%d",&k); /*输入循环右移的位数k*/
move(&a,k); /*调用结点循环右移k位运算函数*/
for(i=0;i<a.len;i++) /*输出结点循环右移k位运算后的顺序表*/
printf("/%4d",a.data[i]);
}
(4)
#define MAXSIZE 100
typedef struct
{ int len;
int data[MAXSIZE];
}SEQUENLIST; /*顺序表结构类型定义*/
void insert(SEQUENLIST*q,int x) /*插入元素x,保持顺序表有序性算法*/
{ int i;
for(i=q->len-1;q->data[i]>=x&&i>=0;i--)
q->data[i+1]=q->data[i];
q->data[i+1]=x;
q->len++:
}
main()
{ int i,x;
SEQUENLIST p;
p.len=7; /*假设顺序表中有7个元素*/
for(i=0;i<p.len;i++) /*输入顺序表元素*/
scanf("/%d",&p.data[i]);
scanf("/%d",&x); /*输入待插入元素x*/
insert(&p,x); /*调用插入元素x函数*/
for(i=0;i<p.len;i++) /*插入元素x后的顺序表显示*/
printf("/%4d",p.data[i]);
}
【答案解析】