-
题目要求:试写一算法实现顺序表的就地逆置,即利用原表的存储空间将线性表 ( a 1 , a 2 , … , a n ) (a_1,a_2,\dots,a_n) (a1,a2,…,an)逆置为 ( a n , a n − 1 , … , a 1 ) (a_n,a_{n-1},\dots,a_1) (an,an−1,…,a1)。
-
逆置代码
void ListReverse(SqList *L) { int i; int temp; for(i=0;i<L->length/2;i++) { temp=L->data[i]; L->data[i]=L->data[L->length-i-1]; L->data[L->length-i-1]=temp; } }
-
完整程序
#include<stdio.h> #define MAXSIZE 20 typedef struct { int data[MAXSIZE]; int length; }SqList; void ListTraverse(SqList L) { int i; for(i=0;i<L.length;i++) printf("%d ",L.data[i]); printf("\n"); } void ListReverse(SqList *L) { int i; int temp; for(i=0;i<L->length/2;i++) { temp=L->data[i]; L->data[i]=L->data[L->length-i-1]; L->data[L->length-i-1]=temp; } } int main() { SqList L; int a[9]={1,2,3,4,5,6,7,8,9}; L.length=9; for(int i=0;i<9;i++) { L.data[i]=a[i]; } ListTraverse(L); ListReverse(&L); ListTraverse(L); }
试写一算法实现顺序表的就地逆置。
最新推荐文章于 2021-11-27 22:02:09 发布