下面是一个 C 语言的算法示例,实现对顺序表就地逆置的操作:

#include <stdio.h>

#define MAX_SIZE 100

typedef struct {
    int data[MAX_SIZE];
    int length;
} SqList;

void reverse(SqList *L) {
    int i, temp;
    for (i = 0; i < L->length / 2; i++) {
        temp = L->data[i];
        L->data[i] = L->data[L->length - 1 - i];
        L->data[L->length - 1 - i] = temp;
    }
}

int main() {
    SqList list;
    int i, n;

    printf("Enter the length of the list: ");
    scanf("%d", &list.length);

    printf("Enter the elements of the list:
");
    for (i = 0; i < list.length; i++) {
        scanf("%d", &list.data[i]);
    }

    printf("Original list: ");
    for (i = 0; i < list.length; i++) {
        printf("%d ", list.data[i]);
    }

    reverse(&list);

    printf("\nReversed list: ");
    for (i = 0; i < list.length; i++) {
        printf("%d ", list.data[i]);
    }

    return 0;
}

在这个算法中,我们定义了一个顺序表结构'SqList',其中包含一个数组'data'用于存储数据元素,以及一个整数'length'表示顺序表的长度。

'reverse'函数接受一个顺序表指针作为参数,通过遍历前一半的元素,将第i个元素与倒数第i个元素交换位置,从而实现就地逆置操作。

在主函数中,首先根据用户输入初始化了一个顺序表对象'list',然后调用'reverse'函数对顺序表进行逆置操作,并输出逆置前后的顺序表元素。

请注意,这个算法假设顺序表的长度已经在输入时确定,并且顺序表中元素的数据类型为整数。你可以根据实际情况进行修改。


原文地址: https://www.cveoy.top/t/topic/E7z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录