我正在研究java中的这部分数据结构,我仍然在混淆如何使用它们代替数据结构以及我为什么要使用它们?!
答案 0 :(得分:5)
在自助餐厅,回去,洗碗的地方。它们有一条传送带,它们将板材放在一端进行清洗,然后它们以相同的顺序从另一端出来。这是队列或先入先出(FIFO)。如果您愿意,也可以从数组或列表中创建其中一个。
它们有什么用?好吧,假设你有一个树数据结构(它就像一个真正的木头,除了它是颠倒的),你想写一个程序完全走过它,以便打印出所有的叶子。
一种方法是进行深度优先行走。从树干开始,然后转到第一个分支,然后转到该分支的第一个分支,依此类推,直到找到一个叶子并打印出来。但是你如何备份到下一个分支?好吧,每次你去一个分店,你都会推动"你的堆栈中的一些信息,当你备份你的时候#pop; pop"它退出了,它告诉你下一个分支。这就是你如何跟踪每个点的下一个分支。
另一种方式是广度优先行走。从主干开始,对主干上的所有分支进行编号,并将这些数字放入队列中。然后你从另一端拿出一个数字,转到那个分支,并且对于每个分支,你再次对它们进行编号(连续第一个)并将它们放入队列中。当你继续这样做时,你将首先访问离树干一分支的树枝。然后你将访问距离行李箱2个分支的所有分支,依此类推。最终你会到达树叶,你可以打印它们。
这是编程中的两个非常基本的概念。 [复制]
答案 1 :(得分:0)
当您需要以先进先出/先进先出(分别)顺序处理数据时,可以使用队列和堆栈,并且您希望能够丢弃您轮询的所有项目处理后,队列/弹出堆栈。
当然你也可以使用ArrayList,但是你必须自己维护它并删除你自己处理的所有项目
您可以使用这些结构解决的逻辑问题示例:
答案 2 :(得分:0)
堆栈和队列的应用
堆栈(class Wish: NSObject {
public var wishName : String?
init(withWishName name: String) {
super.init()
wishName = name
}
}
设计人员喜欢检查平衡括号,)
队列-在处理Compiler
HTTP
请求中