首页 > 其他分享 >4.5栈、队列以及环形缓冲区

4.5栈、队列以及环形缓冲区

时间:2023-02-10 20:45:14浏览次数:41  
标签:4.5 函数 队列 写入 数组 缓冲区 数据 First

      栈、队列,都可以不通过指定地址和索引来对数组的元素进行读写。需要临时的保存计算过程中的数据、连接在计算机上的设备或者输入输出的数据时,都可以通过这些方法来使用内存。如果每次保存临时数据都需要指定地址和索引,程序就会变得比较麻烦,因此要加以改进。

      栈和队列的区别在于数据出入的顺序不同。在对内存数据进行读写时,栈用的是LIFO(Last  Input  First Out,后入先出)方式,而队列用的则是FIFO(First  Input  First  Out,先入先出)方式。如果我们在内存中预留出栈和队列所需的空间,并确定好写入和读出的顺序,就不用再指定地址和索引了。

      如果要在程序中实现栈和队列,就需要以适当的元素数来定义一个用来存储数据的数组,以及对该数组进行读写的函数对。当然,在这些函数的内部,对数组的读写 会涉及索引的管理,但从使用函数的角度来说,就没有必要考虑数组及索引了。

      我们把往栈中写入数据的函数命名为Push,把从栈中读出数据的函数命名为Pop,把往队列中写入数据的函数命名为EnQueue,把从队列中读出数据的函数命名为DeQueue。通过使用这些函数,可以将数据临时保存(写入),然后再在需要时候把这些数据读出来(代码清单4-4、代码清单4-5)。

 

       顾名思义,在栈中,LIFO方式表示栈的数组中所保存的最后面的数据(Last  In)会被最先读取出来(First  Out)。代码清单4-4的程序运行后,按照123,456,789的顺序写入的数据,结果按照789、456、123的顺序读取出来(图4-7)。

 

       与栈相对的是队列,顾名思义,FIFO方式表示队列的数组中所保存的最初数据(First  Input)会最先被读取出来(First  Out)。代码清单4-5中的程序运行后,按照123,456,789的顺序写入的数据,结果按照123,456,789的顺序读取出来(图4-8)。

 

       队列这一方式也称为排队。排队能起到很好的缓冲作用。队列一般是以环状缓冲区(ring buffer)的方式来实现的,也就是本章标题所说的“熟练使用有棱有角的存在”。

 

标签:4.5,函数,队列,写入,数组,缓冲区,数据,First
From: https://www.cnblogs.com/24koi/p/17110227.html

相关文章