当前位置 博文首页 > 文章内容

    C语言数据结构-队列Queue

    作者: 栏目:未分类 时间:2020-06-28 23:36:46

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    #ifndef __LINKQUEUE_H__
    #define __LINKQUEUE_H__
    
    
    #define TRUE 1
    #define FALSE 0
    #define OK 1
    #define ERROR 0
    #define INFEASIBLF -1
    #define OVERFLOW -2
    
    typedef int Status;
    
    typedef int QElemType;
    
    typedef struct QNode {
    	QElemType data;
    	struct QNode *next;
    }QNode, *QueuePtr;
    
    typedef struct {
    	QueuePtr front;
    	QueuePtr rear;
    }LinkQueue;
    
    #endif
    

      

    #include"LinkQueue.h"
    #include<stdlib.h>
    #include<stdio.h>
    
    Status InitQueue(LinkQueue &Q) {
    	Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
    	if(!Q.front) {
    		exit(OVERFLOW);
    	}
    
    	Q.front -> next = NULL;
    	return OK;
    }
    
    Status EnQueue(LinkQueue &Q, QElemType e) {
    	QNode *p = (QueuePtr)malloc(sizeof(QNode));
    	if(!p) {
    		exit(OVERFLOW);
    	}
    
    	p -> data = e;
    	p -> next = NULL;
    	Q.rear -> next = p;
    	Q.rear = p;
    	return OK;
    }
    
    Status DeQueue(LinkQueue &Q, QElemType e) {
    	if(Q.front == Q.rear) {
    		return ERROR;
    	}
    
    	QueuePtr p = Q.front -> next;
    	e = p -> data;
    	Q.front -> next = p -> next;
    	if(Q.rear == p) {
    		Q.rear = Q.front;
    	}
    	free(p);
    	return OK;
    }
    
    
    void show(LinkQueue Q) {
    	QueuePtr n = Q.front -> next;
    	printf(" ============ Q ============\n");
    	while(n) {
    		printf("data = %d\n", n -> data);
    		n = n ->next;
    	}
    }
    
    int main() {
    
    	LinkQueue Q;
    	InitQueue(Q);
    
    	EnQueue(Q, 1);
    	EnQueue(Q, 2);
    	EnQueue(Q, 3);
    
    	show(Q);
    
    	DeQueue(Q, 3);
    	DeQueue(Q, 3);
    	show(Q);
    	return OK;
    }