用C语言实现顺序表的就地逆置,即利用原表的存储空间将线性表 ( ) n a , ,a 1 ⋯ 逆置
时间: 2023-05-11 12:04:59 浏览: 116
可以使用以下代码实现顺序表的就地逆置:
void reverse(int a[], int n) {
int i, temp;
for (i = 0; i < n / 2; i++) {
temp = a[i];
a[i] = a[n - i - 1];
a[n - i - 1] = temp;
}
}
其中,a[]表示顺序表的数组,n表示顺序表的长度。该函数会将顺序表就地逆置,即不需要额外的存储空间。
相关问题
c语言实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,…..an),逆置为( an,an-1, …….a2,a1)。
```
#include <stdio.h>
#define MAXSIZE 100 // 定义最大长度
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 当前长度
} SqList;
void InitList(SqList *L) { // 初始化
L->length = 0;
}
void CreateList(SqList *L, int n) { // 创建线性表
int i;
printf("请输入 %d 个元素:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
void PrintList(SqList L) { // 打印线性表
int i;
printf("当前线性表为:");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void ReverseList(SqList *L) { // 就地逆置
int i, 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 n;
printf("请输入线性表长度:");
scanf("%d", &n);
CreateList(&L, n);
PrintList(L);
ReverseList(&L);
printf("逆置后的线性表为:");
PrintList(L);
return 0;
}
```
试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1
可以使用链表来实现顺序表的地位逆置,即利用原表的存储空间将其改造成线性表(a1,a2,…,an-1,an)的存储空间,则线性表中元素的前后关系与原表恰好相反。利用链表实现时,可以新建一个头节点,将原表中的元素逆序存储在头节点之后的位置上,从而使得头节点之后的链表满足线性表逆置的要求。
阅读全文