链队列的实现

链队列由以下2个操作:入队算法和出队算法,创建2个函数,具体实现在下面:

[cce_cpp]
#include <stdio.h>
#include <malloc.h>
#define NULL 0
#define true 1
#define false 0
typedef struct Node
{
char data;
struct Node *next;
}LinkQueueNode;
typedef struct
{
LinkQueueNode *front;
    LinkQueueNode *rear;
}LinkQueue;
int EnQueue(LinkQueue *q,char x)
{
LinkQueueNode *p;
p=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(p)
{
   p->data=x;
   p->next=NULL;
   q->rear->next=p;
   q->rear=p;
   return (true);
}
else
   return (false);

}
int Del_Q(LinkQueue *q,char *x)
{
LinkQueueNode *p;
p=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(q->front==q->rear)
   return (false);
p=q->front->next;
q->front->next=p->next;
if(q->rear==p)
   q->rear=q->front;
*x=p->data;
free(p);
return (true);
}
main()
{
LinkQueue *Q;
Q=(LinkQueue *)malloc(sizeof(LinkQueue));
Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
Q->rear=Q->front;
char x;
printf("输入入队的字符顺序:\n");
while((x=getchar())!='\n')
   EnQueue(Q,x);
printf("出队顺序:\n");
while(Del_Q(Q,&x))
{
   putchar(x);
}
printf("\n");
}
[/cce_cpp]
实现效果如下


链队列的实现
链队列的实现

顺序队列的实现

顺序队列由以下2个操作:入队算法和出队算法,创建2个函数,具体实现在下面:

<pre>[cce_cpp]
#include &lt;stdio.h&gt;
#include &lt;malloc.h&gt;
#define TRUE 1
#define FALSE 0
#define m 50
 
typedef struct
{
char elem[m];
int front;
int rear;
}SeqQueue;
 
void InitQueue(SeqQueue *q)
{
q-&gt;front=0;
q-&gt;rear=0;
}
 
int EnQueue(SeqQueue *q,int x)
{
if(q-&gt;rear==m)
{
   printf("队列已满");
   return (FALSE);
}
else
{
   q-&gt;elem[q-&gt;rear]=x;
        q-&gt;rear++;
   return (TRUE);
}
}
 
int DeQueue(SeqQueue *q,int x)
{
if(q-&gt;rear==q-&gt;front)
{
   printf("队空");
   return (FALSE);
}
else
{
   x=q-&gt;elem[q-&gt;front];
        q-&gt;front++;
   return x;
}
 
}
 
main()
{
SeqQueue *Q;
Q=(SeqQueue*)malloc(sizeof(SeqQueue));
int x;
InitQueue(Q);
printf("输入入队的数字:\n");
scanf("%d",&amp;x);
while(x!=0)
{
   EnQueue(Q,x);
   scanf("%d",&amp;x);
}
    printf("出队队列的数字:\n");
while(x=DeQueue(Q,x))
{
   printf("%2d",x);
}
printf("\n");
}[/cce_cpp]
实现的如下


顺序队列的实现
顺序队列的实现