C语言线性表ADT实现整数反转:模块化编程示例
以下是一个使用线性表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 著作权归作者所有。请勿转载和采集!