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


    作者 于延

    单位 哈尔滨师范大学

    任务描述:

    输入整数N,再输入N个整数,将这N个整数倒序输出。(不用定义数组,用动态内存实现)

    输入样例:
    1. 10
    2. 1 2 3 4 5 6 7 8 9 10
    输出样例:
    10 9 8 7 6 5 4 3 2 1
    
    输入样例:
    1. 15
    2. 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程序如下:

    1. #include
    2. #include
    3. // 定义ElemType为int类型,用于存储顺序列表中的元素
    4. typedef int ElemType;
    5. // 定义顺序列表结构体
    6. typedef struct _SeqList {
    7. ElemType* Data; // 指向元素数据的指针
    8. int length; // 当前列表中的元素个数
    9. int size; // 列表分配的空间大小
    10. } SeqList;
    11. // 函数声明
    12. void InitList(SeqList* List, int n);
    13. void InsertList(SeqList* List, int p, int Elem);
    14. void DestroyList(SeqList* List);
    15. void DispList(SeqList* List);
    16. int main() {
    17. ElemType number; // 用于读取用户输入的元素
    18. SeqList Nums; // 顺序列表变量
    19. int n; // 用于读取用户输入的列表大小
    20. // 读取用户希望创建的列表大小
    21. scanf("%d", &n);
    22. // 初始化列表
    23. InitList(&Nums, n);
    24. // 循环读取用户输入的元素,并插入到列表中
    25. for (int i = 0; i < n; i++) {
    26. scanf("%d", &number);
    27. InsertList(&Nums, i, number);
    28. }
    29. // 显示列表中的元素
    30. DispList(&Nums);
    31. // 销毁列表,释放内存
    32. DestroyList(&Nums);
    33. return 0;
    34. }
    35. // 初始化列表
    36. void InitList(SeqList* List, int n){
    37. // 为列表的数据部分分配内存
    38. List->Data = (ElemType*)malloc(n * sizeof(ElemType));
    39. if (List->Data == NULL) {
    40. // 如果内存分配失败,则输出错误信息并退出程序
    41. printf("Memory allocation failed");
    42. exit(EXIT_FAILURE); // 使用EXIT_FAILURE作为退出码,表示程序异常退出
    43. }
    44. List->length = 0; // 初始时列表为空,长度为0
    45. List->size = n; // 列表的大小设置为用户指定的n
    46. }
    47. // 在列表的指定位置插入元素
    48. void InsertList(SeqList* List, int p, int Elem) {
    49. List->Data[p] = Elem; // 将元素放置在列表的指定位置
    50. List->length++; // 列表长度加1
    51. }
    52. // 销毁列表,释放内存
    53. void DestroyList(SeqList* List) {
    54. free(List->Data); // 释放列表数据部分所占用的内存
    55. }
    56. // 显示列表中的元素
    57. void DispList(SeqList* List) {
    58. // 从列表的最后一个元素开始向前遍历
    59. for (int i = List->length - 1; i > 0; i--) {
    60. printf("%d ", List->Data[i]); // 打印元素,并在元素间添加空格
    61. }
    62. printf("%d", List->Data[0]); // 打印第一个元素,不在其后添加空格
    63. }

  • 相关阅读:
    Jetson Agx Xavier平台ov5693 glass-to-glass 延时测试
    教你如何使用关键词获取淘宝和天猫的商品信息
    practical on mifare
    rocky8安装docker步骤
    Redis实践
    路由汇总带来的三层环路-解决实验
    根据DataFrame1中指定列c1的每个值a1 从DataFrame2中指定列c2中的每个值a2 找到与a1最临近的值a2,进行所在行合并
    PIES源码,大型体检中心源码,医院智慧体检系统源码
    【vue-admin-element】在侧边栏和主体部位之上添加区域
    238. 银河英雄传说,带权值的并查集
  • 原文地址:https://blog.csdn.net/2302_80325489/article/details/136782628