Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 堆栈和队列是线性数据结构还是非线性数据结构?_C++_C_Data Structures - Fatal编程技术网

C++ 堆栈和队列是线性数据结构还是非线性数据结构?

C++ 堆栈和队列是线性数据结构还是非线性数据结构?,c++,c,data-structures,C++,C,Data Structures,我很久以来一直面临这个问题。很少有作者说堆栈和队列是线性数据结构,很少有人说是非线性的。哪一个是正确的,为什么 在维基百科中,队列是一个线性数据结构。我也相信它们是线性的,因为没有像树木那样的转移。然而,在尝试在线测试时,有人说这些是非线性的 请准确地回答我,这是真的,为什么 对我来说,队列或堆栈只是一种规范。实现可能会有所不同。对我来说,队列或堆栈只是一种规范。实现可能会有所不同。两者都可能是真的。单词“stack”和“queue”只定义允许的访问模式,而不是实现细节。例如,您可以将两者实现为

我很久以来一直面临这个问题。很少有作者说堆栈和队列是线性数据结构,很少有人说是非线性的。哪一个是正确的,为什么

在维基百科中,队列是一个线性数据结构。我也相信它们是线性的,因为没有像树木那样的转移。然而,在尝试在线测试时,有人说这些是非线性的


请准确地回答我,这是真的,为什么

对我来说,队列或堆栈只是一种规范。实现可能会有所不同。

对我来说,队列或堆栈只是一种规范。实现可能会有所不同。

两者都可能是真的。单词“stack”和“queue”只定义允许的访问模式,而不是实现细节。例如,您可以将两者实现为一个链表。

两者都可以为true。单词“stack”和“queue”只定义允许的访问模式,而不是实现细节。例如,您可以将两者都实现为链表。

视情况而定!队列/堆栈可以像FIFO和LIFO那样是线性的,但是在优先级队列的情况下它可以是非线性的,例如,服务元素取决于您指定的某些参数
所以,两者都是真的!这完全取决于您如何实现所使用的数据结构

然而,最有可能的是堆栈被认为是线性的,队列可以同时是线性的,链表和树是非线性的。

这取决于它!队列/堆栈可以像FIFO和LIFO那样是线性的,但是在优先级队列的情况下它可以是非线性的,例如,服务元素取决于您指定的某些参数
所以,两者都是真的!这完全取决于您如何实现所使用的数据结构
然而,堆栈很可能是线性的,队列可以同时是线性的,链表和树是非线性的。

这里的“线性”是什么意思?它们当然既不是圆形也不是球形

此外,答案将取决于您所谈论的堆栈/队列


你是说“相邻的”吗

如果您的意思是
std::stack
std::queue
(请从您的问题中删除“C”标记),那么它仍然取决于您的回答。它们都是容器适配器,这意味着可以将底层实现指定为模板参数。默认情况下,
std::stack
std::queue
构建在
std::deque
的基础上,而不保证是连续的

对于其他任意容器规范,这取决于


你是说“顺序”吗

标准C++:<代码> STD::向量,<代码> STD::列表< /C> >代码> STD::这意味着

std::stack
/
std::queue
本身不是序列容器,但其实现可能是序列容器,具体取决于您选择的序列容器


希望能有帮助。

这里的“线性”是什么意思?它们当然既不是圆形也不是球形

此外,答案将取决于您所谈论的堆栈/队列


你是说“相邻的”吗

如果您的意思是
std::stack
std::queue
(请从您的问题中删除“C”标记),那么它仍然取决于您的回答。它们都是容器适配器,这意味着可以将底层实现指定为模板参数。默认情况下,
std::stack
std::queue
构建在
std::deque
的基础上,而不保证是连续的

对于其他任意容器规范,这取决于


你是说“顺序”吗

标准C++:<代码> STD::向量,<代码> STD::列表< /C> >代码> STD::这意味着

std::stack
/
std::queue
本身不是序列容器,但其实现可能是序列容器,具体取决于您选择的序列容器



希望能有所帮助。

线性数据结构与其实现细节或内存模型无关。它只是意味着它的所有元素都有它的前面或后面,不包括开头和结尾。不像树或草

线性数据结构包括队列、堆栈


如果有人错误地将该行程序用作“连续内存”,那么他/她就是错的。

行程序数据结构与其实现细节或内存模型无关。它只是意味着它的所有元素都有它的前面或后面,不包括开头和结尾。不像树或草

线性数据结构包括队列、堆栈


如果有人错误地将线性数据用作“连续内存”,那么他/她就是错的。

好的,现在你能澄清一下线性数据结构是什么意思吗?你做了什么在线测试?取决于队列的类型。FIFO队列是线性的,优先级队列不是(至少,如果它是为了保持基本操作的快速而实现的,则不是)。但是,如果你想,一个FIFO队列和一个栈都可以使用优先级队列来实现。至少有两个C++概念可以被认为是“线性”、“连续”的概念和“序列”概念。它们导致了根本不同的答案。@ MsAlter:C++标准对某些函数具有复杂性要求。这是我看到标题时想到的第一件事。好的,现在你能澄清一下你所说的线性数据结构是什么意思吗?你做了什么在线测试?取决于队列的类型。FIFO队列是线性的,优先级队列不是(至少,如果它是为了保持基本操作的快速而实现的,则不是)。但是,如果你想,一个FIFO队列和一个栈都可以使用优先级队列来实现。至少有两个C++概念可以被认为是“线性”、“连续”的概念和“序列”概念。它们导致了根本不同的答案。@ MsAlter:C++标准对某些函数具有复杂性要求。那不是