有头结点
#include "stdio.h"
#include "stdlib.h"
#define Maxsize 3
typedef struct linkNode
{
int data;
struct linkNode *next;
}linknode;
typedef struct linkQueue
{
linknode *front;
linknode *rear;
}linkqueue;
int initQueue(linkqueue &lq)
{
linknode *p;
p=(linknode *)malloc(sizeof(linknode));
lq.front=p;
lq.rear=p;
p->next=NULL;
}
int isEmptyQueue(linkqueue lq)
{
if(lq.front->next==NULL)
{
printf("this is empty queue\n");
return 1;
}
}
int enQueue(linkqueue &lq,int e)
{
linknode *p;
p=(linknode *)malloc(sizeof(linknode));
p->data=e;
p->next=NULL;
lq.rear->next=p;
lq.rear=p;
}
int deQueue(linkqueue &lq,int &e)
{
linknode *p;
if(isEmptyQueue(lq)==1)
return 1;
p=lq.front->next;
e=p->data;
lq.front->next=p->next;
if(lq.rear==p)
lq.rear=lq.front;
free(p);
}
int showQueue(linkqueue lq)
{
linknode *p;
p=lq.front->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
linkqueue lq;
int e;
initQueue(lq);
enQueue(lq,1);
enQueue(lq,2);
enQueue(lq,3);
enQueue(lq,4);
showQueue(lq);
deQueue(lq,e);
deQueue(lq,e);
printf("%d\n",e);
showQueue(lq);
deQueue(lq,e);
enQueue(lq,4);
showQueue(lq);
deQueue(lq,e);
deQueue(lq,e);
deQueue(lq,e);
return 1;
}
无头结点
#include "stdio.h"
#include "stdlib.h"
#define Maxsize 3
typedef struct linkNode
{
int data;
struct linkNode *next;
}linknode;
typedef struct linkQueue
{
linknode *front;
linknode *rear;
}linkqueue;
int initQueue(linkqueue &lq)
{
lq.front=NULL;
lq.rear=NULL;
}
int isEmptyQueue(linkqueue lq)
{
if(lq.front==NULL)
{
printf("this is empty queue\n");
return 1;
}
}
int enQueue(linkqueue &lq,int e)
{
linknode *p;
p=(linknode *)malloc(sizeof(linknode));
p->data=e;
p->next=NULL;
if(lq.front==NULL)
{
lq.front=p;
lq.rear=p;
}
else
{
lq.rear->next=p;
lq.rear=p;
}
}
int deQueue(linkqueue &lq,int &e)
{
linknode *p;
if(isEmptyQueue(lq)==1)
return 1;
p=lq.front;
e=p->data;
lq.front=p->next;
if(lq.rear==p)
lq.rear=lq.front;
free(p);
}
int showQueue(linkqueue lq)
{
linknode *p;
p=lq.front;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
linkqueue lq;
int e;
initQueue(lq);
enQueue(lq,1);
enQueue(lq,2);
enQueue(lq,3);
enQueue(lq,4);
showQueue(lq);
deQueue(lq,e);
deQueue(lq,e);
printf("%d\n",e);
showQueue(lq);
deQueue(lq,e);
enQueue(lq,4);
showQueue(lq);
deQueue(lq,e);
deQueue(lq,e);
deQueue(lq,e);
return 1;
}