队列的学习
定义队列(queue)是只允许在一端进行插入,在另一端进行删除的运算受限的线性表。
/** * Description:构造链队列 */void InitQueue(struct linkqueue *Q){Q -> front = Q -> rear = NULL;}/** * Description:判队空 */int QueueEmpty(struct linkqueue *Q){int flag;flag = (Q -> front == NULL && Q -> rear == NULL)? 1 : 0;return flag;}/** * Description:入队 */void EnQueue(struct linkqueue *Q, int data){struct qnode *s;s = malloc(sizeof(struct qnode));s -> data = data;s -> next = NULL;if(QueueEmpty(Q)){//将x插入空队列Q -> front = Q -> rear = s;}else{//将x插入非空队列Q -> rear -> next = s;Q -> rear = s;}}/** * Description:出队 */void DeQueue(struct linkqueue *Q){struct qnode *p;if(QueueEmpty){printf("队为空\n");}else{p = Q -> front;Q -> front = Q -> front -> next;if(p == Q -> rear){//队里只有一个节点,删去后需要将尾节点置空Q -> rear = NULL;}free(p);}}