|
发表于 2020-11-3 00:34:43
From FishC Mobile
|
显示全部楼层
本帖最后由 赚小钱 于 2020-11-3 00:38 编辑
巴巴鲁 发表于 2020-11-2 21:18
既然栈和队列是特殊的数组,那我觉得一些简单的应用完全可以用数组来解决,虽然会提升时间复杂度,但是不 ...
首先,我没看过你说的那本书,不清楚你所谓的数据结构是什么意思。
我推测是定义了某种类似于 struct Queue 的数据类型。如果推测无误,那我是赞同这种定义数据类型的编码方式,且远优于直接使用数组。
因为,用户,或者说开发者只想要的是一种支持先进先出的线性数据结构,具体到使用上表现为 queue.push queue.pop 两个函数,至于是使用数组,还是链表,还是双向链表,亦或是循环链表什么的,谁又会关心呢?
而且,还是那句话,你所谓的假溢出完全是一个 bug ,与你直接用数组做队列,还是将数组封装到一个叫做 Queue 的结构体中,完全没有关系。
然后说一下你的表述问题,无论是栈还是队列都不能被称作特殊的数组。
一般的数据结构或者算法教材会称作线性表,链表。这两者都是空间维度的概念,即逻辑上相邻的元素的空间关系。而队列与栈是对元素操作的规则定义。以上四个概念有一个共同点,他们都是一维空间。因此,栈与队列的实现方式是基于线性表或者链表。
接着,我不清楚你为何会说数组会增加时间复杂度。不用数组还能有什么呢,链表吗?双指针它不香吗,再不行加一个实际长度也是好的呀。
最后,还是看一些正统的教材吧,那种能帮你区分线性表链表与栈队列的教材,如果是英文教材就更好了。
在学习数据结构与算法设计的同时,最好也学习下程序设计,比如面向对象编程,或者设计模式。然后你就会发现用结构体是理所当然的方法。
祝,编程快乐,不需要解决太多的 bug。
|
|