作者 于延
单位 哈尔滨师范大学
输入整数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
- #include
-
- // 定义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]); // 打印第一个元素,不在其后添加空格
- }