【问题标题】:array is of same type and linked list is of different type数组类型相同,链表类型不同
【发布时间】:2010-09-04 12:03:55
【问题描述】:

在一次采访中,当我问应届研究生数组和链表有什么区别时,第一个回答通常是“在数组中可以有相同的数据类型,在链表中可以有不同的数据类型”。当我告诉他们解释时,他们会说他们只是在某个地方读过,或者他们不知道具体怎么读。
我真的无法理解这个想法是从哪里进入他们的大脑的?有人能帮我理解为什么一个大学毕业生会这么想吗?或者你认为这真的有区别吗?

【问题讨论】:

  • 是的,目前的教育有点缺陷,因为它倾向于忽略数据结构理论,因为像 Java 这样的语言为你实现了这一切。
  • 这些书只是把这些话放在我们的脑海里,我们告诉大家唱歌我所知道的关于数组的所有内容都是“相同数据类型的集合”

标签: java c++ c arrays linked-list


【解决方案1】:

这些学生可能已经学习了静态类型语言的数组和动态类型语言的链表,因此他们开始使用他们所使用的语言的范式来识别数据结构。

例如,他们可能使用 C 中的数组和 Scheme 中的链表。或者对于当今基本上类似于 C 的语言的流行名称,分别是 Scheme。

【讨论】:

  • 或者,类似地,他们被教导链接列表和多态性,没有人回头说“嘿,这个多态性的东西也可以与数组等其他结构一起使用!”
  • @Tyler:我认为很可能是这种情况。我记得这就是我被介绍给多态性的方式。
【解决方案2】:

好吧,我不能代表他们说话,但是当您学习编程时,您会得到一些作业。一个要求你将数据保存在一个数组中,另一个要求你建立一个链表来保存数据。当您这样做时,您会发现两者都可以帮助您...将数据保存在内存中...各有优缺点。

所以感觉一样,但他们的经验有限:

当他们学会声明一个数组时,就像

int[] myArray = new int[20];

所以他们知道他们必须确定类型......

当他们建立一个节点时

prev= object;
next = object;

他们知道自己不受特定类型或对象的约束。

这是我最好的猜测。 希望对您有所帮助。

P.S:看到你给出的答案会很有趣......谁知道呢,他们中的一些人可能会看到它并学到一些东西:)

【讨论】:

  • 因为在C语言中,他们经常使用operator new。
  • 1.为什么新的有什么不同?!问题是关于人们不以问题作者理解主题的方式理解主题......对于这类问题,任何答案怎么可能是好或坏?!我只是猜测而已。
【解决方案3】:

可能会读 perl,其中列表可以有任何数据类型...但是 perl 和列表有些相似。 c 也有 void * 的概念,因此我们可以将任何数据类型指针类型转换为 void 指针。

【讨论】:

    【解决方案4】:

    在链表中搜索不是很容易,而在数组中搜索很复杂吗?执行的各种其他功能也是如此,即删除和插入。(在删除中,您需要删除您制作的孔和您必须制作的插入一个孔,然后移动所有元素)。 此外,我想对您提出的问题的解释很简单,因为数组可以保存一种数据类型,例如姓名或卷号,而链表可以将它们保存在一起。

    【讨论】:

      猜你喜欢
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多