当前位置: 首页 > 知识库问答 >
问题:

什么是堆栈?arrayStack?排队?排队?它们在C语言中有什么不同?[闭门]

雍兴修
2023-03-14

在我的数据结构C课程中,我正在学习有关堆栈的所有基本知识。然而,他们之间有点混淆了。谁能告诉我def是什么吗。关于arrayStack和arrayQueue,stackQueue及其区别?而教科书一点帮助都没有。

共有3个答案

壤驷旭
2023-03-14

数组是组织数据(及其存储分配)的一种方式,而堆栈和队列是插入删除访问数据的策略。

不同的策略可以与组织结合,根据您的需要构建不同的数据结构

例如:

  • 使用数组堆栈
  • 使用数组排队
  • 使用链表堆栈
  • 树使用数组等
许彭祖
2023-03-14

堆栈和队列都是随着添加元素而自然增长的数据结构。

  • 在堆栈中,元素被添加(推送)到堆栈的一侧,然后从堆栈的同一侧检索(弹出)。换句话说,你插入的最后一个元素是你可以检索的第一个元素。这种类型的数据结构被称为LIFO(最后进入,第一出来)。
  • 在队列中,元素被添加到队列的后面,并从前面检索。换句话说,您插入的第一个元素是您可以检索的第一个元素。这种类型被称为FIFO(First In, First Out)。

在各种语言中(不是特别指C语言或其库),有各种方法可以实现自然增长的数据结构。其中一种方法是保留一个简单的内部数组:元素存储在数组中,添加/删除操作负责增长或缩小内部数组,而不会打扰您。通常,当一个结构被称为ArrayWhat时,它应该意味着沿着这些线的东西。

楚方伟
2023-03-14
Firstly you need to understand the fundamentals, lets take a ride thorough the basics again.

We begin with stack empty:

-----
stack
Now, let's perform Push(stack, A), giving:

-----
| A |  <-- top
-----
stack
Again, another push operation, Push(stack, B), giving:

-----
| B |  <-- top
-----
| A |
-----
stack

堆栈

堆栈的概念图如下所示:

Now let's remove an item, letter = Pop(stack), giving:

-----              -----
| A |  <-- top     | B |
-----              -----
stack              letter
And finally, one more addition, Push(stack, C), giving:

-----
| C |  <-- top
-----
| A |
-----
stack
You'll notice that the stack enforces a certain order to the use of its contents, i.e., the Last thing In is the First thing Out. Thus,

我们说堆栈执行后进先出命令。

Now we can see one of the uses of a stack...To reverse the order of a set of objects.


Like a stack, a queue usually holds things of the same type. We usually draw queues horizontally. Here's a queue of characters with 3

元素:

queue
-------------
| a | b | c |
-------------
  ^       ^
  |       |
front    rear


Queues are useful because they produce a certain order in which the contents of the queue are used. Let's see what order that is by

看着一排字符。现在,一个特定的Enter和DELETE序列会对这个队列做什么:

queue
-------------
| a | b | c |
-------------
  ^       ^
  |       |
front    rear
Now, Enter(queue, 'd')...

queue
-----------------
| a | b | c | d |
-----------------
  ^           ^
  |           |
front        rear
Now, ch = Delete(queue)...

queue           ch
-------------   -----
| b | c | d |   | a |
-------------   -----
  ^       ^
  |       |
front    rear
 类似资料:
  • 数据结构中的堆栈是什么?在队列上使用堆栈的重要性是什么?我用C语言创建了stack,但无法理解它的原理和优点。

  • 本文向大家介绍队列和栈是什么?有什么区别?相关面试题,主要包含被问及队列和栈是什么?有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 队列和栈都是被用来预存储数据的。 队列允许先进先出检索元素,但也有例外的情况,Deque 接口允许从两端检索元素。 栈和队列很相似,但它运行对元素进行后进先出进行检索。

  • (1)队列先进先出,栈先进后出。 (2)遍历数据速度不同。 栈只能从头部取数据 也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性; 队列则不同,他基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影像数据结构,速度要快的多。

  • 本文向大家介绍深入浅析C语言中堆栈和队列,包括了深入浅析C语言中堆栈和队列的使用技巧和注意事项,需要的朋友参考一下 1.堆和栈 (1)数据结构的堆和栈 堆栈是两种数据结构。 栈(栈像装数据的桶或箱子):是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同要取出放在箱子里面底下的东西(放入的比较早的物体),首先要移开压在它上面的物体(放入的比较晚的物体)。 堆(堆像一棵倒过

  • 队列,和 栈一样,也是一种对数据的"存"和"取"有严格要求的 线性存储结构。 与栈结构不同的是, 队列的两端都"开口",要求数据只能从一端进,从另一端出,如图 1 所示: 图 1 队列存储结构 通常,称进数据的一端为 "队尾",出数据的一端为 "队头",数据元素进队列的过程称为 "入队",出队列的过程称为 "出队"。 不仅如此, 队列中数据的进出要遵循 "先进先出" 的原则,即最先进队列的数据元素