gpt4 book ai didi

c - 将整数保存到第一个整数给定的数组中

转载 作者:行者123 更新时间:2023-11-30 15:03:08 25 4
gpt4 key购买 nike

我需要知道,如何将整数从标准输入保存到数组中,由行中的第一个整数给出......嗯......希望你理解。我给你举个例子。

在标准输入上我有:

0 : [ 1, 2, 3 ]
5 : [ 10, 11, 12, 13]
6 : [ 2, 4, 9 ]
0 : [ 4, 9, 8 ]
5 : [ 9, 6, 7 ]
5 : [ 1 ]

我需要将这些整数保存到数组中,如下所示:

0={1, 2, 3, 4, 9, 8}
5={10, 11, 12, 13, 9, 6, 7, 1}
6={2, 4, 9}

我完全不知道该怎么做。有一个问题,数组的数量(在本例中 - 0, 5, 6 - 所以 3 个数组)可能非常高,我需要有效地使用内存......所以我想我需要类似 mallocfree 来解决这个问题,还是我错了?数组的名称 (0, 5, 6) 可以更改。括号内的整数个数没有最大限制。

感谢您的帮助。

最佳答案

我同意这个假设,这是作业,我同意这个假设,这不是你要做的第一个作业,所以我不会向你提供解决方案,而是提供一些可以帮助你解决问题的提示你自己。

给定输入行

5 : [ 10, 11, 12, 13]

我将“5”称为“数组名称”,将 10、11、12 和 13 称为要添加的值。

  1. 您应该实现一些系统来将数组名称映射到索引。一个简单的方法是这样的:

.

size_t num_arrays;
size_t * array_names;

在这里,在您的示例输入中,num_arrays 最终将变为 3,其中 array_names[3] = { 0, 5, 6} 。如果找到新的数组名称,请realloc 并添加新的数组名称。您还需要值的实际数组:

int * * array;

您需要为每个新数组名称realloc数组(就像realloc array_names)。 array[0] 将表示数组 array_names[0] 这里数组 0array[1] 将表示数组array_names[1] 这里数组 5array[2] 将代表数组 array_names[2] 这里数组 6

要访问数组,请像这样查找它的索引:

size_t index;
for (size_t index = 0; index < num_arrays && array_names[index] != search; ++index) ;
  • 第二步很简单。一旦你弄清楚了,你需要使用 array[index] 添加元素,realloc 那个 (array[index] = realloc(array[index], new size) )并在其中添加元素array[index][i+old_size] = new_value[i]
  • 显然,您还需要跟踪单独数组中的元素数量;)

    提示:如果搜索数组名称花费的时间太长,则必须用一些更复杂的数据结构(例如 HashMap 或二叉搜索树)替换该琐碎的映射部分。该概念的其余部分可能或多或少保持不变。

    如果您在解析输入行时遇到问题,我建议您针对此解析部分提出一个特定的新问题。

    关于c - 将整数保存到第一个整数给定的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833014/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com