顺序栈和顺序队列
来源:互联网 发布:福州 数据分析 培训 编辑:程序博客网 时间:2024/05/02 10:18
1.栈的定义:
栈是限定在表尾进行插入和删除操作的线性表;
把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom), 不含任何数据元素的栈称为空栈。
栈又称为后进先出的线性表。
栈的插入操作,叫做进栈,也称为压栈,入栈。子弹入弹夹;
栈的删除操作,叫做出栈,也有的叫做弹栈。
(1)顺序栈的进栈操作:
/*插入元素e为新的栈顶元素*/
Status Push(SqStack *S, SElemType e){
if(S->top == MAXSIZE -1) /栈满**/
{
return 0;
}
s->top++; /*栈顶指针增加一*/
s->data[s->top] = e; /*将新插入元素赋值给栈顶空间*/
return 1;
}
(2)顺序栈的出栈操作:
/*若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK; 否则返回ERROR*/
Status Pop(SqStack *S, SElemType *e){
if(s->top == -1)
return 0;
*e = s->data[s->top]; /*将要删除的栈顶元素赋值给e*/
s->top--; /*栈顶指针减一*/
return 1;
}
2.队列的定义:
队列是一种特殊的线性表。
队列仅在线性表的两端进行操作。
队头(Front):取出数据元素的一端。
队尾(Rear):插入数据元素的一端。
队列不允许在中间部位进行操作!
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的线性表。
允许插入的一端称为队尾,允许删除的一端称为队头。
(1)顺序队的入队操作:
/* 若队列未满,则插入元素e为Q新的队尾元素 */
Status EnQueue(SqQueue *Q,QElemType e)
{
if ((Q->rear+1)%MAXSIZE == Q->front) /* 队列满的判断 */
return 0;
Q->data[Q->rear]=e; /* 将元素e赋值给队尾 */
Q->rear=(Q->rear+1)%MAXSIZE; /* rear指针向后移一位置, */
/* 若到最后则转到数组头部 */
return 1;
}
(2)顺序队的出队操作:
/* 若队列不空,则删除Q中队头元素,用e返回其值 */
Status DeQueue(SqQueue *Q,QElemType *e)
{
if (Q->front == Q->rear) /* 队列空的判断 */
return 0;
*e=Q->data[Q->front];/* 将队头元素赋值给e */
Q->front=(Q->front+1)%MAXSIZE; /* front指针向后移一位置, */
/* 若到最后则转到数组头部 */
return 1;
}
- 顺序栈和顺序队列
- 顺序栈和队列
- 顺序队列和链式队列
- 顺序队列和链队列
- C语言实现,顺序队列,循环队列,和栈!
- 两个顺序栈实现顺序队列功能
- 停车场(顺序栈,顺序队列)
- 队列的顺序和链接
- 实验二 栈和队列——顺序栈、顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 顺序队列
- 移动端知识的一些总结
- jQuery实现左侧分类菜单
- java初学两个特性:Jvm 和 GC
- Python进阶08 异常处理
- Android:最全面的Socket使用解析
- 顺序栈和顺序队列
- 面向对象多态
- Android知识点整理
- socket编程中send()和recv()参数解析
- 121. Best Time to Buy and Sell Stock
- UML——概述和关系
- 蓝桥杯 连号区间数
- Nginx 學習筆記(一) 從原始碼編譯Nginx(上)
- 青岛理工大学第五届邀请赛 J: 麻烦的转盘(概率DP入门题)