首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将整数保存到由第一个整数给定的数组中

将整数保存到由第一个整数给定的数组中
EN

Stack Overflow用户
提问于 2016-11-28 03:30:38
回答 2查看 50关注 0票数 0

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

在stdin上,我有:

代码语言:javascript
运行
复制
0 : [ 1, 2, 3 ]
5 : [ 10, 11, 12, 13]
6 : [ 2, 4, 9 ]
0 : [ 4, 9, 8 ]
5 : [ 9, 6, 7 ]
5 : [ 1 ]

我需要像这样将这些整数保存到数组中:

代码语言:javascript
运行
复制
0={1, 2, 3, 4, 9, 8}
5={10, 11, 12, 13, 9, 6, 7, 1}
6={2, 4, 9}

我完全不知道该怎么做。有一个问题,数组的数量(在这种情况下是- 0,5,6-3)可能非常高,我需要有效地使用memory...So我猜我需要像mallocfree这样的东西来解决这个问题,或者我错了?可以更改数组(0,5,6)的名称。括号中的整数数没有最大限制。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2016-11-28 03:41:26

我同意假设,这是家庭作业,我同意假设,这不是你要做的第一个家庭作业,所以我不会给你一个解决方案,而是一些小技巧,可以帮助你自己解决它。

给定输入行

5: 10,11,12,13

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

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

代码语言:javascript
运行
复制
size_t num_arrays;
size_t * array_names;

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

代码语言:javascript
运行
复制
int * * array;

您需要为每个新的数组名称创建数组(就像realloc array_names一样)。array[0]在这里代表阵列array_names[0]阵列0array[1]在这里代表阵列array_names[1]在这里阵列5array[2]在这里代表阵列array_names[2]阵列6

要访问一个数组,可以像这样查找它的索引:

代码语言:javascript
运行
复制
size_t index;
for (size_t index = 0; index < num_arrays && array_names[index] != search; ++index) ;

  1. 第二步很简单。一旦你弄清楚了,你需要使用array[index][i+old_size] = new_value[i].

来添加元素,添加元素(array[index] = realloc(array[index], new size)),并在那里添加元素

显然,您还需要跟踪单独数组中的元素数量;)

提示:如果搜索数组名称花费的时间太长,您将不得不用一些更复杂的数据结构来替换那些微不足道的映射部分,比如散列映射或二进制搜索树。这个概念的其余部分可能会大致保持不变。

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

票数 1
EN

Stack Overflow用户

发布于 2016-11-28 07:51:31

在算法方面,您需要将(关联数组)从int映射到数组。这在很久以前就在大多数高级语言中得到了解决。

如果您必须手动实现它,您有以下几个选择:

  • 简单的“主”数组,你存储你的0,5,6,1000000,然后在每次你必须访问它的时候,通过在for中进行搜索,将它们映射到索引0,1,2,3(当;
  • 哈希表:编写简单的哈希函数,将0,5,6,1000000 (它们被称为键)映射到小于1000的值,分配1000个元素的数组,然后为每个哈希函数结果创建“主”数组结构;
  • 某种树(例如红黑树),手动实现可能有点复杂。

最后两种结构是经典编程的一部分,在各种文章和书籍中都有很好的描述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40833014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档