链式队列的实现

来源:互联网 发布:开淘宝店要交哪些费用 编辑:程序博客网 时间:2024/05/17 06:16
#include <stdio.h>  #include <stdlib.h>#define overflow -2  #define ok 1#define error -1typedef struct QNode {int data;struct QNode *next;}QNode,*QueuePtr;typedef struct {QueuePtr front;QueuePtr rear;}LinkQueue;int InitQueue(LinkQueue &Q){Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));if(Q.front) return overflow;Q.front->next=NULL;return ok;}  int EnQueue(LinkQueue &Q,int e){QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));if(!p) return overflow;p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;return ok;}int DeQueue(LinkQueue &Q,int e){QueuePtr p;if(Q.front==Q.rear)return error;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 Print(LinkQueue *q){  QueuePtr p;    if(q->front == q->rear)          return;      p = q->front->next;      while(p != q->rear)      {          printf("%d ",p->data);          p = p->next;      }      printf("%d",p->data);      printf("\n");  }  void main(){int x,i;      LinkQueue Q;      InitQueue(Q);      for(i=0;i<100;i++)      {  scanf("%d",&x);        EnQueue(Q,x);        }   for(i=0;i<100;i++) { DeQueue(Q,x);       Print(&Q); }}

0 0
原创粉丝点击