7-2 动态数组(需要多大内存申请多大内存)

作者 于延

单位 哈尔滨师范大学

任务描述:

输入整数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]); // 打印第一个元素,不在其后添加空格  
}

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值