JAVA顺序表逆置算法_线性表顺序存储-练习题3-逆置顺序表

本文介绍如何使用JAVA实现线性表的顺序存储结构,并提供了一个就地逆置算法,将线性表(a1, a2, ..., an)逆置为(an, ..., a2, a1)。通过考虑奇偶数长度的情况,利用中转数进行元素置换,实现了原地逆置操作。代码示例展示了如何创建顺序表,打印初始顺序表,以及逆置后的顺序表。" 78391956,5737108,NYNU ACM实验室招新月赛解析:字符串操作与排序,"['算法竞赛', '字符串处理', '编程训练', '问题解析', '代码交流']
摘要由CSDN通过智能技术生成

题目:

以顺序表作存储结构实现线性表,实现就地逆置算法,即在原表的存储空间将线性表(a1, a2, ..., an)逆置为(an, ... , a2, a1).

思路:

需要考虑的线性表个数的奇/偶数情况,奇/偶数情况不同,置换的步伐长度不同

设置一个中转数,当做数置换时做中转存储

代码:

#include

#include

#define MAXSIZE 101

typedef struct {

int r[MAXSIZE];

int length;

} SqList;

void inverseElement(SqList *L);

void print(SqList L);

int main(int argc, char *argv[]) {

SqList list;

int i;

list.length = 9;

for (i = 1; i <= list.length; i++) {

list.r[i] = i * 3;

}

printf("初始顺序表:\n");

print(list);

printf("\n");

inverseElement(&list);

printf("置换后的顺序表:\n");

print(list);

return 0;

}

/**

* 逆置顺序表

*/

void inverseElement(SqList *L) {

int middle = 0, k = -1, i;

if (L->length % 2 == 0) {

for (i = L->length / 2; i > 0; i--) {

k += 2;

middle = L->r[i];

L->r[i] = L->r[i + k];

L->r[i + k] = middle;

}

} else {

k = 0;

for (i = L->length / 2; i > 0; i--) {

k += 2;

middle = L->r[i];

L->r[i] = L->r[i + k];

L->r[i + k] = middle;

}

}

}

void print(SqList L) {

for (int i = 1; i <= L.length; i++) {

printf("%d\t", L.r[i]);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值