题目描述
建立长度为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 struct {
char data[100];
int length;
}SqList;
void InitList(SqList *&L)//初始化
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
void CreateList(SqList *&L)//创建顺序表
{
int n,i;
char a[100];
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
scanf("%c",&a[i]);
L->data[i]=a[i];
}
L->length=n;
}
void reverseList(SqList *&L)//逆置顺序表
{
int i;
char swap;
for(i=0 ; i<L->length/2 ; i++)
{
swap = L->data[i];
L->data[i] = L->data[L->length-i-1];
L->data[L->length-i-1] = swap;
}
}
void ShowList(SqList *L)
{
for(int i=0;i<L->length;i++)
printf("%c ",L->data[i]);
}
int main()
{
SqList *L;
InitList(L);
CreateList(L);
reverseList(L);
ShowList(L);
return 0;
}
源代码2
还可以直接倒着输出
#include<stdio.h>
#include<stdlib.h>
typedef struct {
char data[100];
int length;
}SqList;
void InitList(SqList *&L)//初始化
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
void CreateList(SqList *&L)//创建顺序表
{
int n,i;
char a[100];
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
scanf("%c",&a[i]);
L->data[i]=a[i];
}
L->length=n;
}
void ShowList(SqList *L)
{
for(int i=0;i<L->length;i++)
printf("%c ",L->data[L->length-i-1]);
}
int main()
{
SqList *L;
InitList(L);
CreateList(L);
ShowList(L);
return 0;
}
ps:听说C++写会方便一些,而我这个菜鸡本身还是不会C++相关的知识,我也会慢慢去学习,希望以后我会有所进步。
这里也给出大佬的代码
#include <iostream>
using namespace std;
int main(){
int n;
char a[1024];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
cout<<a[n-1-i]<<' ';
}
return 0;
}