作者 于延
单位 哈尔滨师范大学
任务描述:
输入整数N,再输入N个整数,将这N个整数倒序输出。(不用定义数组,用动态内存实现)
输入样例:
10
1 2 3 4 5 6 7 8 9 10
输出样例:
10 9 8 7 6 5 4 3 2 1
输入样例:
15
708 417 427 843 610 838 932 978 189 981 208 618 178 872 576
输出样例:
576 872 178 618 208 981 189 978 932 838 610 843 427 417 708
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
C程序如下:
#include<stdio.h>
#include<stdlib.h>
// 定义ElemType为int类型,用于存储顺序列表中的元素
typedef int ElemType;
// 定义顺序列表结构体
typedef struct _SeqList {
ElemType* Data; // 指向元素数据的指针
int length; // 当前列表中的元素个数
int size; // 列表分配的空间大小
} SeqList;
// 函数声明
void InitList(SeqList* List, int n);
void InsertList(SeqList* List, int p, int Elem);
void DestroyList(SeqList* List);
void DispList(SeqList* List);
int main() {
ElemType number; // 用于读取用户输入的元素
SeqList Nums; // 顺序列表变量
int n; // 用于读取用户输入的列表大小
// 读取用户希望创建的列表大小
scanf("%d", &n);
// 初始化列表
InitList(&Nums, n);
// 循环读取用户输入的元素,并插入到列表中
for (int i = 0; i < n; i++) {
scanf("%d", &number);
InsertList(&Nums, i, number);
}
// 显示列表中的元素
DispList(&Nums);
// 销毁列表,释放内存
DestroyList(&Nums);
return 0;
}
// 初始化列表
void InitList(SeqList* List, int n){
// 为列表的数据部分分配内存
List->Data = (ElemType*)malloc(n * sizeof(ElemType));
if (List->Data == NULL) {
// 如果内存分配失败,则输出错误信息并退出程序
printf("Memory allocation failed");
exit(EXIT_FAILURE); // 使用EXIT_FAILURE作为退出码,表示程序异常退出
}
List->length = 0; // 初始时列表为空,长度为0
List->size = n; // 列表的大小设置为用户指定的n
}
// 在列表的指定位置插入元素
void InsertList(SeqList* List, int p, int Elem) {
List->Data[p] = Elem; // 将元素放置在列表的指定位置
List->length++; // 列表长度加1
}
// 销毁列表,释放内存
void DestroyList(SeqList* List) {
free(List->Data); // 释放列表数据部分所占用的内存
}
// 显示列表中的元素
void DispList(SeqList* List) {
// 从列表的最后一个元素开始向前遍历
for (int i = List->length - 1; i > 0; i--) {
printf("%d ", List->Data[i]); // 打印元素,并在元素间添加空格
}
printf("%d", List->Data[0]); // 打印第一个元素,不在其后添加空格
}