现在,我知道你必须告诉自己,“为什么有人甚至会这么做?”但是,它会让我们对一些原始的东西有一个非常有洞察力的知识。请释放你的才能。
答案 0 :(得分:0)
这是一个有效的问题 - 大学水平的数据结构问题。所以答案可以在许多数据结构书籍中找到。 http://books.google.co.in/books/about/Data_Structures_Using_C.html?id=X0Cd1Pr2W0gC
答案 1 :(得分:0)
您的问题的措辞使您似乎意识到链接列表和数组之间的区别。所以我要跳过那一部分。
在实现中要记住的要点是,虽然链接列表具有指向下一个元素的指针,但在数组中,这将自动成为下一个索引。因此,实现的一种方法是将链表的所有数据点存储在数组中。如果必须插入或删除元素,则首先必须在数组中创建一个空格以放置它们,或者删除创建的额外空间。在链表中,您可以简单地更改一个/两个节点的指针,您就可以完成了。但是,我们无法在数组中执行此操作,因为我们无法操作数组中的下一个指针。因此,一个简单的想法是根据您的操作选择将每个元素向左或向右移动一步。在插入的情况下,将该元素插入通过向右移动创建的空间中。如果删除,请将要删除的元素右侧的所有内容移到一个索引的左侧。请注意,这样每次插入和删除都将为O(n)。
在删除的情况下避免这些重复转换的想法可能是用预先确定的字符替换要删除的元素,比如说' '。因此,在遍历阵列时,' '可以解释为一个空的空间。这将避免在删除情况下的左移。此外,当阵列已满时,我们可以遍历整个阵列并删除所有' *'并在一遍中移动元素。
注意引入有关数组边界的检查。