数据结构 堆栈与队列-2
2020-06-30 17:16
85 查看
数据结构 堆栈与队列-2
队列
- 队列是一种特殊的线性表,它只允许在表的前端front进行删除操作,在表的后端rear进行插入操作。
- 进行插入操作的称为队尾rear,进行删除操作的为队头。
- 队列中没有元素时,称为空队列。
- 队列具有先进先出的特点。
- 队列空的条件:front=rear
- 队列满的条件:rear=maxsize
循环队列
- 将存储队列元素的以为数组首尾相接,形成一个环状,这种形式表示为循环队列。
- 通常还需要增加标志s来区分队列满还是空。
循环队列顺序存储
- 类型定义
//队列最大数据元素数目 #define max_size 10 typedef struct SeqQueue{ //存放队列中数据元素的存储单元 ElemType elems[max_size]; //队头指针、队尾指针 int front,rear; }SeqQueue;
- 入队操作
void enQueue(SeqQueue SQ,ElemType elem){ if((SQ.rear+1)%max_size==SQ.front) error("overflow"); else{ SQ.rear=(SQ.rear+1)%max_size; SQ.elem[SQ.rear]=elem; } }
- 出队操作
ElemType deQueue(SeqQueue SQ){ if(isEmpty(SQ)) error("Queue is empty"); else{ SQ.front=(SQ.front+1)%max_size; return SQ.elems[SQ.front]; } }
- 获取队列头元素
ElemType front(SeqQueue SQ){ if(isEmpty(SQ)){ error("queue is empty"); } else{ return SQ.elems[(SQ.front+1)%max_size]; } }
- 判断队列是否为空
boolean isEmpty(SeqQueue SQ){ if(SQ.front==SQ.rear&&s==0) return true; else return false; }
队列的链式存储
- 用链式存储结构表示队列时,需要设置队头指针和队尾指针,以便指示队头结点和队尾结点。
- 结点结构
typedef struct lqnode{ ElemType data; struct lqnode *next; }lqnode;
- 链式队列
typedef struct LinkedQueue{ lqnode *front; lqnode *rear; }LinkedQueue;
- 初始化队列
void initiate(LinkedQueue LQ){ LQ.front=(lqnode*)malloc(sizeof(lqnode)); if(LQ.front==NULL) error; LQ.rear=LQ.front; }
- 入队操作
void enQueue(LinkedQueue LQ,ElemType elem){ s=(lqnode*)malloc(sizeof(lqnode)); if(!s) error; s->data=elem; s->next=NULL; LQ.rear->next=s; LQ.rear=s; }
- 出队操作
ElemType deQueue(LinkedQueue LQ){ if(isEmpty(LQ)) error; else{ ElemType elem=LQ.front->next->data; LQ.front->next=LQ.front->next->next; return elem; } }
相关文章推荐
- 使用LikedList 模拟一个堆栈或者俄队列数据结构。
- 数据结构-堆栈队列-银行业务队列简单模拟
- 【数据结构和算法】_03_堆栈 &队列
- 考察数据结构 第二部分:队列、堆栈和哈希表[译]
- 使用LinkedList来模拟堆栈或队列数据结构
- 使用LinkedList模拟一个堆栈或队列数据结构
- 巧用javascript数组实现数据结构-堆栈与队列
- java小练习-使用LinkedList模拟一个堆栈或队列数据结构
- 考察数据结构——第二部分:队列、堆栈和哈希表[译]
- java 使用LinkedList模拟一个堆栈或者队列数据结构
- Java数据结构--------堆栈和队列
- 数据结构-堆栈和队列最简单的实现(Python实现)
- 巧用javascript数组实现数据结构-堆栈与队列
- 考察数据结构——第二部分:队列、堆栈和哈希表[译] (转别人的)
- JavaScript学习总结(二十一)——使用JavaScript的数组实现数据结构中的队列与堆栈
- Java LinkedList特有方法程序小解 && 使用LinkedList 模拟一个堆栈或者队列数据结构。
- Java使用LinkedList模拟一个堆栈或者队列数据结构。
- 考察数据结构——第二部分:队列、堆栈和哈希表[译]
- 使用JavaScript的数组实现数据结构中的队列与堆栈
- 使用JavaScript的数组实现数据结构中的队列与堆栈