Data structures 数据结构面试问题

Data structures 数据结构面试问题,data-structures,Data Structures,有人问我以下问题: 您将如何存储下面给出的数据(您将选择哪种数据结构): 我的回答: 因为这看起来像一堆列表,其头部节点链接在一起。 使用两种节点类型—一个id—具有以下定义的常规节点类型: Struct node1 { int val; struct node*next; }; // to store the numerical part of the data struct node2 { int val; struct node *down; struct node* next; };

有人问我以下问题: 您将如何存储下面给出的数据(您将选择哪种数据结构):

我的回答: 因为这看起来像一堆列表,其头部节点链接在一起。 使用两种节点类型—一个id—具有以下定义的常规节点类型:

Struct node1
{
int val;
struct node*next;
};
// to store the numerical part of the data

struct node2
{
 int val;
struct node *down;
struct node* next;
};
//this is the heads of each list.. for the alphabet part of the question.
采访者的反应: 这是你能想到的最好的数据结构吗。 在遍历和每个节点所需的内存方面abt如何

我的答复是: 如果我们创建某种哈希表,我们可以更好地遍历

同志们,我要问你们: 我们能做得更好吗??有没有更好的方法来存储这种类型的数据

我们假设数据是所有数字(甚至是每个头部节点上的数字),并且不连续,可能重复。正确答案是什么?
在C/C++ +</P> < >中,为了更好地遍历和内存使用,可以考虑使用可变长度数组(java alayLIST)

< p>。我认为这个问题的目的是从您那里获取关于数据结构的想法。
如果每个节点实际上只有一个字符和6个整数,则不需要存储两个列表。此外,如何使用它将是重要的考虑因素。也许一个字符和一个数字范围就足够了,这取决于数据到底是什么。

我要问的第一个问题是关于数据的。似乎是一个简单的例子,说明了如何打破一系列连续数字。考虑到我只会存储断点。这些类型的问题旨在测试你提问的能力,并深入到潜在问题。

如果它们的字面意思是“存储范围从N到N+x”,那么你可以将其压缩为从字母到范围开始和范围结束元组的映射;)

我想问一下这些数据将如何使用。面试官要么透露他最初隐瞒的内容,看看你是否会问,要么编造一些东西。然后我会问什么样的更新以及如何更新。对他来说,不太可能想到这么远,所以面试分数会增加。否则,创建一个足够复杂的内存存储结构来解释所有事实,或者将其放入关系数据库中。

在C#中,您可以使用string/int数组字典:

Dictionary<string,int[]> 
字典

@xtofl。。谢谢你的编辑。这是一个愚蠢的问题,因为没有提供足够的信息来得到“正确”的答案。我的答案是字符串,因为您没有告诉我数据是什么、如何使用或如何修改。你想快点找到15个?这是-->15。O(1)查找。如果面试官认真想得到一个有用的答案,他们可能希望你问一些关于数据性质的问题,比如数据使用的上下文,内存/CPU性能权衡应该在哪里,实际上,您并没有在任何地方指定应该在什么语言/语系中实现它。对于C、C++、斯卡拉和Perl,我的答案将非常不同:埃里克:当我提出上述答案时,他们告诉我,我不可能轻易地浏览列表。所以我认为任何节点的值都可以在任何点上改变。假设我需要将值为6的节点更改为999。我应该能做得很快。所以我们在寻找快速遍历而不是内存折衷。@Craig:假设数据最差。。。。数字不必是连续的,可以有重复。。。interviwer dint仅为这种类型的数据指定其权限。。。这是我举的一个例子,这样我可以很容易地提出这个问题……这就是重点。他(她?)。不要妄想!客户需求比其他任何东西都更真实。你的假设总是错的@克雷格:我会在以后的问题上记住这一点。感谢关系数据库?我希望你是在开玩笑。你至少需要Oracle的企业版来存储这种数据:)@Erik:为什么不使用关系数据库呢?这是一种面试情况,问题解决者应提供丰富的潜在答案。因为这个问题是单独提出的,你没有办法评估最佳解决方案,因为你没有足够的信息。所以,是的,提供一个选项菜单作为答案。我认为如果你像你提到的那样随便问一下最初的问题,你会得到额外的分数,但以“可能将其放入关系数据库”结束,你会撤销所有额外的分数,并以“bonuspoints=-bonuspoints”结束。
Dictionary<string,int[]>