队列链式实现 c语语言

#include 
#include 
typedef int ElemType;
typedef struct QNode{
ElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
    QueuePtr front;
    QueuePtr rear;
}LinkQueue;
//初始化一个空队列
void InitQueue(LinkQueue *Q){
  Q->front=Q->rear=(QNode*)malloc(sizeof(QNode));
  if(!Q->front) exit(0);
  Q->front=Q->rear;
  Q->front->next=NULL;
}
//在队尾插入n个结点
void insert(LinkQueue *Q,int i){
  QueuePtr p;
  int j=0;
 for(;jdata);
  p->next=NULL;//队尾的后继指针为空
  Q->rear->next=p;
  Q->rear=p;
}

}
//在队头删除n个结点并输出数据
void DelQueue(LinkQueue *Q,int i){
    int j=0;
  QueuePtr  p;
  printf("********************\n");
while(jfront!=Q->rear)){//判断队为空列是否
        j++;
    p=Q->front->next;
    printf("%d\n",p->data);

    if(p==Q->rear){
        Q->front=Q->rear;//此时队列为空,将队头和队尾为同一结点
    }else{
     Q->front->next=p->next;
    }
 free(p);
}

}
int main()
{  LinkQueue Q;
   InitQueue(&Q);
   int n,m;
   printf("请输入数据\n");
   scanf("%d",&n);
   insert(&Q,n);
   printf("请输入数据\n");
  printf("********************\n");
   scanf("%d",&m);
   DelQueue(&Q,m);
   return 0;
}

 

转载于:https://my.oschina.net/tanyonghu/blog/686014

你可能感兴趣的:(队列链式实现 c语语言)