一、题目
设计一个算法,实现将顺序表就地逆置,即利用原顺序表的存储单元将数据元素序列(a0,a1,…,an-1)逆置为(an-1,…, a1,a0)。
本题所使用的数据结构定义如下:
typedef int ElemType ;
顺序表的数据结构定义:
#define MAX_SIZE 100typedef struct sqlist{ ElemType List[MAX_SIZE] ;int length ;} SqList ;
二、算法思路
1、定义两数交换函数。
2、用循环遍历顺序表中的元素,依次调用两数交换函数,将顺序表中的第一个元素与最后一个元素的值互换,再将第二个元素与倒数第二个的值互换,以此类推,直到顺序表完成倒序。
三、程序实现
void Swap(ElemType* a, ElemType* b){ ElemType temp = *a; *a = *b; *b = temp;}void Reverse(SqList* L){ for (int i = 0; i length/2; i++) Swap(&L->List[i], &L->List[L->length - 1 - i]);}