逆置顺序表
建立长度为n的顺序表,然后将表中的数据元素逆置,即若表中原来的数据元素序列为(a0,a1,a2,…,an),则逆置后的数据元素序列为(an,an-1,an-2,…,a1,a0)。(数据类型为字符型)
输入
第一行为顺序表的长度n;第二行为顺序表中的数据元素.
输出
输出为逆置后的顺序表.
样例输入
7 ABCDEFG
样例输出
G F E D C B A
代码实现
1、利用顺序表来实现
#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;
typedef struct {
ElemType data[100];
int length;
}SqList;
void CreateList(SqList *&L,ElemType a[],int n)//创建顺序表
{
int i=0,k=0;
L=(SqList *)malloc(sizeof(SqList));
while(i<n)
{
L->data[k]=a[i];
k++;i++;
}
L->length=k;
}
void InitList(SqList *&L)//初始化
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
void Inverse(SqList *&L)//逆置顺序表
{
int i=0,k=L->length-1;
ElemType a[100];
while(i<L->length)
{
a[i]=L->data[k];
i++;k--;
}
i=0;
while(i<L->length)
{
L->data[i]=a[i];
i++;
}
}
void ShowList(SqList *L)
{
for(int i=0;i<L->length;i++)
{
if(i!=L->length)
{
printf("%c ",L->data[i]);
}else
{
printf("%c",L->data[i]);
}
}
}
int main()
{
int n;
ElemType a[100];
SqList *L;
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++)
{
scanf("%c",&a[i]);
}
CreateList(L,a,n);
Inverse(L);
ShowList(L);
return 0;
}
2、利用数组来实现
#include<stdio.h>
typedef struct {
char a[1000];
int length;
}Sqlist;
int main(){
Sqlist s;
int i;
scanf("%d\n",&s.length);
for(i=0;i<s.length;i++)
{
scanf("%c",&s.a[i]);
}
for(i=s.length-1;i>0;i--)//倒序输出
{
printf("%c ",s.a[i]);
s.length--;
}
printf("%c\n",s.a[i]);
return 0;
}