int data[maxsize]; int front;//队首 int rear;//队尾 }sqQueue; 1. 2. 3. 4. 5. 6. 7. 8. 9. 知识点: 队空时条件front=(front+1)%maxsize 初始化队列 void initqueue(sqQueue &qu) { qu.front=qu.rear=0; } 1. 2. 3. 4. 判断队空 int isqueueempty(sqQueue qu) { if(qu.fron...
}intmain(){ LinkQueue q; InitQueue(q);// 初始化队列QElemType e1 =666, e2 =888;// 向队列添加元素EnQueue(q, e1); EnQueue(q, e2);printf("队列元素: "); PrintQueue(q);// 打印队列QElemType e3; DeQueue(q, e3);printf("删除元素为: %d \n", e3);printf("队列元素: "); PrintQueue...
(1)初始化循环队列 1//初始化循环队列2voidInitQueue(sqQueue *q){3q->front=0;4q->rear=0;5q->data[0]=0;6} (2)求循环队列的长度及判断为满 1//求循环队列的长度2intQueuelength(sqQueue *q){3return(q->rear-q->front+MAXSIZE)%MAXSIZE;4}5//判断循环队列是否已满6boolIsfull(sqQueue *q)...
//队列的初始化操作voidQueueInit(Queue*pq);//队列的销毁voidQueueDestroy(Queue*pq);//入队列voidQueuePush(Queue*pq,QDatatype x);//出队列voidQueuePop(Queue*pq);//队列的长度intQueueSize(Queue*pq);//队列是否为空boolQueueEmpty(Queue*pq);//取队头元素QDatatypeQueueFront(Queue*pq);//取队尾元...
1. 链队的初始化 Status initQueue(LinkQueue *Q) { Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(OVERFLOW); Q.front->next = NULL; return OK; } 2. 链队的销毁 Status destroyQueue(LinkQueue *Q) { while (Q.front) { Q.rear = Q.front->next; free(Q....
循环队列定义: 为了克服顺序队列中假溢出,通常将一维数组Queue[0]到Queue[MAXSIZE - 1]看成是一个首尾相连接的圆环,即Queue[0]与Queue[MAXSIZE - 1]相连接在一起,将这样形式的队列成为循环队列。 S1循环队列示例图: S2循环队列各个参数的含义: 1)队列初始化 ...
1. 循环队列的初始化 我们初始化相比链表而言更为简单了,核心就在于申请空间以及将front指针和rear指针内容赋值为0,即指向第0个元素即可(注意第 0个元素内容为空)。其代码可以表示为: 1 2 3 4 5 6 7 8 9 10 //初始化 cir_queue *init(){ cir_queue *q = (cir_queue*)malloc(sizeof(cir_queue))...
typedef struct Queue { QNode* head; //头指针 QNode* tail; //尾指针 }Queue; 队列初始化 思路: 队列可以为空,但是管理头指针和尾指针的结构体不能为空,所以一开始就要断言。其次,在插入数据前,队列肯定是空的,所以直接把头指针和尾指针置空即可。//初始化队列 ...
2.1.2 队列的初始化 voidInitQueue(SqQueue &Q){ Q.front=Q.rear=0; } 2.1.3 队列判空 boolQueueEmpty(SqQueue &Q){if(Q.front==Q.rear)returntrue;returnfalse; } 2.1.4 入队和出队 入队和出队要注意队列是循环的,出到最后之后,重新找头部从头部开始出队,以此类推 ...