資料結構---佇列---迴圈佇列---順序儲存
阿新 • • 發佈:2018-12-30
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 10
typedef int Status;
typedef int QElemType;
typedef struct
{
QElemType data[MAXSIZE];
int front;
int rear;
}SqQueue;
Status InitQueue(SqQueue *Q)
{
Q->front = 0;
Q->rear = 0;
return OK;
}
int QueueLength(SqQueue Q)
{
return (Q.rear-Q.front + MAXSIZE ) % MAXSIZE;
}
Status EnQueue(SqQueue *Q,QElemType e)
{
if((Q->rear+1)% MAXSIZE == Q->front)
return ERROR;
Q->data[Q->rear] = e;
Q->rear = (Q->rear+1) % MAXSIZE;
return OK;
}
Status DeQueue(SqQueue *Q,QElemType *e)
{
if(Q->front == Q->rear)
return ERROR;
*e = Q->data[Q->front];
Q->front = (Q->front+1) % MAXSIZE;
return OK;
}
int main()
{
SqQueue *Q = (SqQueue *)malloc(sizeof(SqQueue));
InitQueue(Q);
EnQueue(Q,1);
EnQueue(Q,2);
EnQueue(Q,3);
EnQueue(Q,4);
QElemType *e = (QElemType *)malloc(sizeof(QElemType));
DeQueue(Q,e);
printf("de-%d\n",*e);
int a;
a=QueueLength(*Q);
printf("len=%d\n",a);
free(e);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 10
typedef int Status;
typedef int QElemType;
typedef struct
{
QElemType data[MAXSIZE];
int front;
int rear;
}SqQueue;
Status InitQueue(SqQueue *Q)
{
Q->front = 0;
Q->rear = 0;
return OK;
}
int QueueLength(SqQueue Q)
{
return (Q.rear-Q.front + MAXSIZE ) % MAXSIZE;
}
Status EnQueue(SqQueue *Q,QElemType e)
{
if((Q->rear+1)% MAXSIZE == Q->front)
return ERROR;
Q->data[Q->rear] = e;
Q->rear = (Q->rear+1) % MAXSIZE;
return OK;
}
Status DeQueue(SqQueue *Q,QElemType *e)
{
if(Q->front == Q->rear)
return ERROR;
*e = Q->data[Q->front];
Q->front = (Q->front+1) % MAXSIZE;
return OK;
}
int main()
{
SqQueue *Q = (SqQueue *)malloc(sizeof(SqQueue));
InitQueue(Q);
EnQueue(Q,1);
EnQueue(Q,2);
EnQueue(Q,3);
EnQueue(Q,4);
QElemType *e = (QElemType *)malloc(sizeof(QElemType));
DeQueue(Q,e);
printf("de-%d\n",*e);
int a;
a=QueueLength(*Q);
printf("len=%d\n",a);
free(e);
return 0;
}