队列enqueue是什么意思(C# queue队列是先进先出,List集合也是先进先出,他们有什么区别么什么情况下需要用到)

本文目录
C# queue队列是先进先出,List集合也是先进先出,他们有什么区别么什么情况下需要用到
Queue是用到需要按顺序进行的时候。会在一个线程中写侦听事件,然后把侦听到的enqueue进去,然后在另外一个线程中dequeue出来。list是用来存储列表,通常存储都可以用。操作方法如下:
1、首先打开vs创建一个控制台应用程序,在Main方法中,定义一个整型的队列。
2、往队列中添加元素,使用Enqueue方法。
3、使用foreach循环,输出整个队列的值。
4、从队列中弹出一个元素,使用Dequeue方法,这个方法是没有参数的。弹出的是最先进入队列的元素。
5、判断一个元素是否在队列中,使用Contains方法。
6、清空整个队列,使用Clear方法。q.Clear();。
7、最后获取队列的元素个数,使用Count属性。q.Count,就可以了。
何为循环队列
队列就像站队一样,一个人站在一个人的后面,形成笔直的一列,就是队列。
如果队伍不是笔直的一列,而是站成一个圆形(队首的人站在队尾的人的后面),就是循环队列。
类型定义
#define QueueSize 100 //应根据具体情况定义该值
typedef char DataType; //DataType的类型依赖于具体的应用
typedef struct{
int front; //头指针,队非空时指向队头元素
int rear; //尾指针,队非空时指向队尾元素的下一位置
int count;//计数器,记录队中元素总数
DataType data;
}CirQueue;
基本运算
用第三种方法,循环队列的六种基本运算:
① 置队空
void InitQueue(CirQueue *Q)
{
Q-》front=Q-》rear=0;
Q-》count=0; //计数器置0
}
② 判队空
int QueueEmpty(CirQueue *Q)
{
return Q-》count==0; //队列无元素为空
}
③ 判队满
int QueueFull(CirQueue *Q)
{
return Q-》count==QueueSize; //队中元素个数等于QueueSize时队满
}
④ 入队
void EnQueue(CirQueue *Q,DataType x)
{
if(QueueFull(Q))
Error("Queue overflow"); //队满上溢
Q-》count ++; //队列元素个数加1
Q-》data=x; //新元素插入队尾
Q-》rear=(Q-》rear+1)%QueueSize; //循环意义下将尾指针加1
}
⑤ 出队
DataType DeQueue(CirQueue *Q)
{
DataType temp;
if(QueueEmpty(Q))
Error("Queue underflow"); //队空下溢
temp=Q-》data;
Q-》count--; //队列元素个数减1
Q-》front=(Q-》front+1)%QueueSize; //循环意义下的头指针加1
return temp;
}
⑥取队头元素
DataType QueueFront(CirQueue *Q)
{
if(QueueEmpty(Q))
Error("Queue is empty.");
return Q-》data;
}
程序中的栈和队列是什么意思
栈(Stack)是仅限制在表的一端进行插入和删除运算的线性表,称插入、删除这一端为栈顶,另一端称为栈底。表中无元素时为空栈。栈
的修改是按后进先出的原则进行的,我们又称栈为LIFO表(Last
In
First
Out)。通常栈有顺序栈和链栈两种存储结构。
栈的基本运算有六种:
·构造空栈:InitStack(S)
·判栈空:
StackEmpty(S)
·判栈满:
StackFull(S)
·进栈:
Push(S,x)
·退栈:
Pop(S)
·取栈顶元素:StackTop(S)
在顺序栈中有"上溢"和"下溢"的现象。
·"上溢"是栈顶指针指出栈的外面是出错状态。
·"下溢"可以表示栈为空栈,因此用来作为控制转移的条件。
顺序栈中的基本操作有六种:·构造空栈·判栈空·判栈满·进栈·退栈·取栈顶元素
链栈则没有上溢的限制,因此进栈不要判栈满。链栈不需要在头部附加头结点,只要有链表的头指针就可以了。
链栈中的基本操作有五种:·构造空栈·判栈空·进栈·退栈·取栈顶元素
队列(Queue)是一种运算受限的线性表,插入在表的一端进行,而删除在表的另一端进行,允许删除的一端称为队头(front),允许插入的
一端称为队尾(rear)
,队列的操作原则是先进先出的,又称作FIFO表(First
In
First
Out)
。队列也有顺序存储和链式存储两种存储结
构。
队列的基本运算有六种:
·置空队:InitQueue(Q)
·判队空:QueueEmpty(Q)
·判队满:QueueFull(Q)
·入队:EnQueue(Q,x)
·出队:DeQueue(Q)
·取队头元素:QueueFront(Q)
顺序队列的"假上溢"现象:由于头尾指针不断前移,超出向量空间。这时整个向量空间及队列是空的却产生了"上溢"现象。
为了克服"假上溢"现象引入循环向量的概念,是把向量空间形成一个头尾相接的环形,这时队列称循环队列。
判定循环队列是空还是满,方法有三种:
·一种是另设一个布尔变量来判断;
·第二种是少用一个元素空间,入队时先测试((rear+1)%m
=
front)?
满:空;
·第三种就是用一个计数器记录队列中的元素的总数。
队列的链式存储结构称为链队列,一个链队列就是一个操作受限的单链表。为了便于在表尾进行插入(入队)的操作,在表尾增加一个尾指
针,一个链队列就由一个头指针和一个尾指针唯一地确定。链队列不存在队满和上溢的问题。在链队列的出队算法中,要注意当原队中只
有一个结点时,出队后要同进修改头尾指针并使队列变空。
栈和队列 - 队列 - 队列的定义及基本运算
定义
队列(Queue)是只允许在一端进行插入 而在另一端进行删除的运算受限的线性表
( )允许删除的一端称为 队头(Front)
( )允许插入的一端称为 队尾(Rear)
( )当队列中没有元素时称为 空队列
( )队列亦称作先进先出(First In First Out)的线性表 简称为 FIFO表
队列的修改是依先进先出的原则进行的 新来的成员总是加入队尾(即不允许 加塞 ) 每次离开的成员总是队列头上的(不允
许中途离队) 即当前 最老的 成员离队
【例】在队列中依次加入元素a a … a n 之后 a 是队头元素 a n 是队尾元素 退出队列的次序只能是a a
… a n
队列的基本逻辑运算
( )InitQueue(Q)
置空队 构造一个空队列Q
( )QueueEmpty(Q)
判队空 若队列Q为空 则返回真值 否则返回假值
( ) QueueFull(Q)
判队满 若队列Q为满 则返回真值 否则返回假值
注意
此操作只适用于队列的顺序存储结构
( ) EnQueue(Q x)
若队列Q非满 则将元素x插入Q的队尾 此操作简称 入队
( ) DeQueue(Q)
若队列Q非空 则删去Q的队头元素 并返回该元素 此操作简称 出队
( ) QueueFront(Q)
若队列Q非空 则返回队头元素 但不改变队列Q的状态
lishixinzhi/Article/program/sjjg/201311/23924
更多文章:
stay committed to(commit to do和commit to do的区别是什么)
2026年7月8日 15:45
如何用随机数字表分组(Excel如何随机并按数量分配一组数)
2025年8月8日 02:45
ui自动化测试工具(测试总结-robotframework之UI自动化)
2026年5月12日 21:00
buffer和builder区别(go语言string之Buffer与Builder)
2026年2月11日 10:00
奔驰c200空调滤芯更换教程(奔驰C200L空调滤芯多久换,C200L空调滤芯位置及更换教程)
2026年4月3日 12:45
将shell脚本设置为命令(在shell脚本中将变量的值作为命令行参数传给程序)
2025年10月5日 08:00
cssci扩展库发表(cssci2017-2018 扩展版 发表的论文评职称算吗)
2026年6月7日 10:00
h5在国外好还是国内好(h5的前景咋样,未来5年内发展趋势怎么样求解答)
2025年11月7日 07:30
获取a标签的value值(如何获取一个a标签的value值)
2026年8月20日 14:00
霹雳布袋戏精彩武戏(求霹雳布袋戏“枭皇论战”“圣魔战印”的精彩打斗视频,给名称和集数就行了)
2026年2月16日 00:00
sql语句查询条数(sql如何查询一个表并统计表内的数据条数)
2025年6月15日 23:00
json数据解析异常(java对接第三方接口json数据异常如何检验)
2025年9月21日 07:00
在C语言程序中,func()是什么意思?遥控器上func是什么意思
2025年9月19日 03:45
flexible and printed electronics(FPC柔性电路板的全称是什么FPC)
2025年5月28日 19:00












