以下是一个使用线性表ADT基本运算的C语言程序,实现整数反转的功能:

#include <stdio.h>
#include <stdlib.h>

// 定义线性表ADT
typedef struct {
    int *data;  // 存储数据的数组
    int length; // 线性表的长度
} SeqList;

// 初始化线性表
void InitList(SeqList *L, int length) {
    L->data = (int *)malloc(length * sizeof(int));
    L->length = length;
}

// 反转整数
int ReverseInteger(int num) {
    SeqList L;
    int i, digit, result = 0;
    char str[16]; // 假设整数位数不超过16位

    // 将整数转换为字符串
    sprintf(str, "%d", num);

    // 初始化线性表
    InitList(&L, strlen(str));

    // 将字符串中的每个字符转换为整数,并存储到线性表中
    for (i = 0; i < L.length; i++) {
        L.data[i] = str[i] - '0';
    }

    // 反转线性表中的元素
    for (i = 0; i < L.length / 2; i++) {
        digit = L.data[i];
        L.data[i] = L.data[L.length - 1 - i];
        L.data[L.length - 1 - i] = digit;
    }

    // 将线性表中的每个整数转换为对应的位数,并计算结果
    for (i = 0; i < L.length; i++) {
        result = result * 10 + L.data[i];
    }

    // 释放线性表的内存
    free(L.data);

    return result;
}

int main() {
    int num;

    printf("请输入一个整数:");
    scanf("%d", &num);

    int reversedNum = ReverseInteger(num);

    printf("反转后的整数为:%d\n", reversedNum);

    return 0;
}

在上述程序中,我们首先定义了一个线性表ADT(SeqList),包含一个存储数据的数组和线性表的长度。然后,我们使用InitList函数初始化线性表,并将整数转换为字符串,然后将字符串中的每个字符转换为整数,并存储到线性表中。接下来,我们使用反转算法将线性表中的元素进行反转。最后,我们将线性表中的每个整数转换为对应的位数,并计算结果。最后,我们使用main函数来测试整数反转的功能,通过键入一个整数,输出反转后的结果。

本程序展示了如何利用线性表ADT实现整数反转,并运用了模块化编程思想,将功能分解为独立的函数,提高代码的可读性和可维护性。


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

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