我最近开始学习数据结构,并且只有我自己的mydict = {"con": con_getinfo,
"xra": xra_getinfo,
"neg": neg_getinfo,
"grf": grf_getinfo,
"ninja" : ninja_getinfo}
lookup = mydict.get(imput)
if lookup: #won't fail if imput isn't on of the options
print "%.6f" % (lookup["balance"])
实现。
现在我偶然发现了两个新的数据结构:linked list
和stack
从我迄今学到的知识来看
queue
是一个stack
,只允许从其尾部插入/删除,以及
linked list
是queue
,只允许在其尾部插入并仅从其头部移除。
我的问题是:
为什么我会使用这两个数据结构而不是允许从任何地方插入和删除的常规linked list
?
另外,为什么这两个数据结构被归类为独立的数据结构而不是"限制访问链接列表"?
答案 0 :(得分:19)
然后,当用户点击后退按钮时,您弹出顶部的那个(从尾部移除 - 用于插入的同一端),这将提供上次访问的网站 - C 。因此,First In(其中 Site A )和Last Out(最后一个进入的概念是 Site D 的概念反过来成为第一个出去的人)
对于FIFO(先进先出)队列,可以说类似。考虑作业队列的示例。在执行作业时,您(不考虑任何优化算法)首先服务于该作业。这使得队列成为一个出色的数据结构,以先到先得的方式处理作业。在这两种情况下,您都不希望在任何索引处任意删除或插入元素。不,这会导致不良行为。因此,需要堆栈/队列。我再次强调,堆栈/队列可以通过对链表实施限制来实现。
抱歉图像质量不佳 - 我只是画了它。
答案 1 :(得分:3)
Stack基本上是一个跟随LIFO的数据结构(LAST IN FIRST OUT)。队列是跟随FIFO(FIRST IN FIRST OUT)的一个。
通常,Stacks
和Queues
可以使用Arrays
和Linked Lists
来实现。
使用Linked List
实现Stack
的原因是,当您需要涉及LAST IN FIRST OUT表单的功能时,您不确定功能需要多少元素。因此,您可以根据需要使用LinkedList
动态创建节点。
Queues
两者都是独立的原因是因为两者都遵循不同的原则,即LIFO和FIFO。
答案 2 :(得分:0)
链表是一种数据结构,在内存中的元素之间具有一定的关系, 栈和队列是具有特定接口和行为的数据结构。栈和队列甚至可以在数组中实现,因此它们是遵循一定规则的数据结构,即栈的LIFO和队列的FIFO(不仅限于此)到链表,它们还可以在其他数据结构(如数组)中实现,它们遵循的行为和规则很重要)