队列

来源:互联网 发布:linux加载mt7601u驱动 编辑:程序博客网 时间:2024/06/16 11:22

队列

基本定义

        只能在对头插入和在队尾删除的线性表

 

代码:

#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20typedef int Status;typedef int QElemType/*循环队列*/typedef struct _SqQueue{QElemType data[MAXSIZE];int front;int rear;} SqQueue;/*初始化队列*/Status InitQueue(SqQueue *q){q->front=0;q->rear=0;return OK;}/*求队列的长度*/int QueueLength(SqQueue *q){return (q->rear-q->front+MAXSIZE)%MAXSIZE;}/*进队*/Status EnQueue(SqQueue *q,QElemType e){/*队满*/if((q->rear+1)%MAXSIZE==q->front){return ERROR;}q->data[q->rear]=e;q->rear=(q->rear+1)%MAXSIZE;return OK;}/*出队*/Status DeQueue(SqQueue *q,QElemType *e){/*队空*/if(q->rear==q->front){return ERROR;}*e=q->data[q->front];q->front=(q->front+1)%MAXSIZE;return OK;}/**链队列**//*节点*/typedef struct _QNode{QElemType data;struct _QNode *next;}QNode,*QNodePtr;typedef struct _LinkQueue{QNodePtr front,rear;}LinkQueue;/*进队*/Status EnQueue(LinkQueue *q,QElemType e){QNodePtr p;p=(QNodePtr)malloc(sizeof(QNode));p->data=e;p->next=NULL;q->rear->next=p;q->rear=p;return OK;}/*出队*/Status DeQueue(LinkQueue *q,QElemType *e){if(q->rear==q->front){return ERROR;}QNodePtr p;p=q->front->next;*e=p->data;if(p==q->rear){q->front->next=NULL;q->rear=q->front;}else{q->front->next=p->next;}free(q);return OK;}


 

0 0
原创粉丝点击