赞
踩
#include<stdio.h> #include<stdlib.h> #include<stdbool.h> #define MaxSize 100 #define ElemType int typedef struct{ //定义队列数据元素 ElemType data[MaxSize]; //定义队头和队尾指针(说是指针,其实也就是指向数组下表的变量而已) int front,rear; }SeqQueue; //初始化队列 void InitQueue(SeqQueue *queue){ //一开始队列的队首和队尾指针都指向0,代表队列中没有元素 queue->front = 0; queue->rear = 0; } //判空 bool QueueEmpty(SeqQueue queue){ //以前我都用if-else语句来return,刚才我发现其实可以直接return的,因为这个==判断本身返回的也是1或者0 return queue.front == queue.rear; } //入队操作 bool EnQueue(SeqQueue *queue,ElemType e){ //先判断队列是否已满 if(queue->rear == MaxSize){ return false; } //将队尾指针指向的位置加入元素e queue->data[queue->rear] = e; //队尾指针后移 queue->rear++; return true; } //出队操作 bool DeQueue(SeqQueue *queue,ElemType *e){ //先判断队列是否为空 if(QueueEmpty(*queue)) return false; //把队首的元素赋值给e *e = queue->data[queue->front]; //队首指针直接后移,前面的不用管了。 queue->front++; return true; } //获取队头元素 bool GetHead(SeqQueue queue,ElemType *e){ //先判断队列是否为空 if(QueueEmpty(queue)) return false; //把队首的元素赋值给e *e = queue.data[queue.front]; return true; } int main(){ //定义队列 SeqQueue queue; ElemType Elem; //初始化队列 InitQueue(&queue); //插入元素 EnQueue(&queue,1); EnQueue(&queue,2); EnQueue(&queue,3); EnQueue(&queue,4); //读出队头元素 GetHead(queue,&Elem); printf("队头元素为%d\n",Elem); //依次出队并读出元素 DeQueue(&queue,&Elem); printf("出队的元素为:%d\n",Elem); DeQueue(&queue,&Elem); printf("出队的元素为:%d\n",Elem); DeQueue(&queue,&Elem); printf("出队的元素为:%d\n",Elem); DeQueue(&queue,&Elem); printf("出队的元素为:%d\n",Elem); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。