(C语言)编写程序,实现顺序表的就地倒置
输入样例:
10
1 2 3 4 5 6 7 8 9 10
输出样例:
10 9 8 7 6 5 4 3 2 1
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElementType;
typedef struct LNode{
ElementType data[MAXSIZE];
int Last; /* 保存线性表中最后一个元素所在的位置 */
}*List;
void reverse(List L);
List MakeEmpty(); //顺序表初始化
void createList(List L); //输入顺序表
void print(List L); //输出顺序表
int main()
{
List L; /*定义顺序表*/
L=MakeEmpty(); //初始化顺序表
createList(L); /*输入测试用例*/
reverse(L); /*顺序表倒置*/
print(L); /*输出新表*/
}
List MakeEmpty(){
List l;
l=(List)malloc(sizeof(struct LNode));
l->Last=-1;
return l;
}
void createList(List L)
{ ElementType x;
int N;
scanf("%d",&N);
while (N--)
{ scanf("%d",&x);
L->Last++;
L->data[L->Last]=x;
}
}
void print(List L)
{ int i;
for (i=0;i<=L->Last;i++)
{printf("%d ",L->data[i]); }
if (L->Last<0) printf("Empty");
}
void reverse(List L){//新建一个顺序表,将原顺序表倒置赋给新的顺序表
List L1; /*定义顺序表*/
L1=MakeEmpty(); //初始化顺序表
int i,j;
for(i=0,j=L->Last;i<=L->Last,j>=0;i++,j--){
L1->data[j]=L->data[i];
}
/*for(j=0;j<=L->Last;j++){//验证顺序表导致赋给中间顺序表是否成功
printf("%d ",L1->data[j]);
}*/
for(i=0;i<=L->Last;i++){//将中间顺序表的值再赋给原顺序表
L->data[i]=L1->data[i];
}
}
运行结果截图: