【About Queue】(待改)
队列
队列满足FIFO规则,先进先出。
C语言代码:(Segmentation fault你大爷(メ ゚皿゚)メ)
#include<stdio.h> #include<stdlib.h> typedef struct Queue { int size; int front; int rear; int *elements; }Queue; void createqueue(Queue *Q,int maxsize) { Q=(Queue*)malloc(sizeof(int)*maxsize); /*初始属性*/ Q->elements=(int*)malloc(sizeof(int)*maxsize); //!!!??? Q->size=maxsize; Q->front=Q->rear=0; //置为空队列 } void Dequeue(Queue *Q) { if(Q->front==Q->rear) { printf("Queue is Empty!\n"); return; } //若为空队列要提醒下~ else { Q->front=(Q->front+1)%Q->size; //Q.front循环+1,为防止出现负数啦 } } int front(Queue *Q) //就是书上那个gethead()啦(-`ェ´-╬) { if(Q->rear==Q->front) { printf("Queue is Empty!\n"); exit(0); } return Q->elements[Q->front]; } void Enqueue(Queue *Q,int element) { if((Q->front+1)%Q->size==Q->front) //这里空出一个元素,使得当(Q.front+1)%Q.size==Q.front,判断队列为满 { printf("Queue is Full!\n"); } else { Q->elements[Q->rear]=element; Q->rear=(Q->rear+1)%Q->size; } } int main() { Queue *Q; createqueue(Q,3); Enqueue(Q,3); printf("%d\n",front(Q)); return 0; }
我所理解的生活,就是和喜欢的一切在一起。