链表队列学习

来源:互联网 发布:apache日志 json 编辑:程序博客网 时间:2024/06/10 01:32
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct QNode{   ElemType data;    QNode *next;}*QueuePtr;struct LinkQueue{  QueuePtr front,rear;};//初始化单链队列int InitQueue(LinkQueue &Q){<span style="white-space:pre"></span>Q.rear=(QueuePtr )malloc(sizeof(QNode));<span style="white-space:pre"></span>Q.front=Q.rear;<span style="white-space:pre"></span>Q.front->next=NULL;    return 0;}//插入元素int EnQueue(LinkQueue &Q,ElemType e){   QueuePtr s;   s=(QueuePtr)malloc(sizeof(QNode));   s->data=e;   s->next=NULL;   Q.rear->next=s;   Q.rear=s;  return 0;}//删除元素int DeQueue(LinkQueue &Q,ElemType &e){  QueuePtr p;  p=Q.front->next;  e=p->data;  Q.front->next=p->next;  if(Q.rear==p)    Q.rear=Q.front;  free(p);  return e;}//得到元素int GetQueue(LinkQueue Q,ElemType &e){   QueuePtr p;   p=Q.front->next;   while(p->next!=NULL){      e=p->data;      p=p->next;      return e;   }     e=p->data;     return e;}//判空int EmptyQueue(LinkQueue Q){    if(Q.front==Q.rear)        return 1;    else     return 0;}//队列长度int LengthQueue(LinkQueue Q){int i=0;QueuePtr p;p=Q.front;while(Q.rear!=p){   i++;   p=p->next;  }  return i; }//清空单链队列int ClearQueue(LinkQueue &Q){    QueuePtr p,q;    Q.rear=Q.front;    p=Q.front->next;    Q.front->next=NULL;    while(p){      q=p;      p=p->next;      free(q);    }    return 0;}int main(){ LinkQueue Q; QueuePtr k; int e; InitQueue(Q); printf("%d",LengthQueue(Q)); printf("\n"); printf("%d",EmptyQueue(Q)); EnQueue(Q,1); EnQueue(Q,2); EnQueue(Q,3); printf("\n"); printf("%d",LengthQueue(Q)); printf("\n"); GetQueue(Q,e); printf("%d ",e); printf("\n"); DeQueue(Q,e); printf("%d ",e);  printf("\n"); printf("%d",LengthQueue(Q)); printf("\n"); ClearQueue(Q); printf("%d ",EmptyQueue(Q)); printf("\n"); EnQueue(Q,1); EnQueue(Q,2); EnQueue(Q,3); for(k=Q.front->next;k!=NULL;k=k->next){<span style="white-space:pre"></span> printf("%d ",k->data); } return 0;}
0 0