순서의 기본 동작 (C 전체 소스 코드)
2816 단어 데이터 구조 - C
#include
typedef int QElemType;
#define MAXSIZE 10
typedef struct
{
QElemType data[MAXSIZE];
int front;
int rear;
}SqQueue;
void InitQueue(SqQueue *Q) //
{
Q->front =0;
Q->rear=0;
}
void EnQueue(SqQueue *Q,QElemType e) //
{
if((Q->rear+1)%MAXSIZE==Q->front)
return;
Q->data[Q->rear]=e;
Q->rear =(Q->rear+1)%MAXSIZE;
}
void DeQueue(SqQueue *Q,QElemType *e) //
{
if(Q->front==Q->rear)
return;
*e=Q->data[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
}
int QueueLength(SqQueue *Q) //
{
return (Q->rear-Q->front+MAXSIZE)%MAXSIZE;
}
int succ(int i)
{
if(i == MAXSIZE)
i = 0;
else
i += 1;
return i;
}
void Printf(SqQueue *Q)
{
int i;
for(i = Q->front; i != Q->rear; i = succ(i))
printf("%d ", Q->data[i]);
}
void main()
{
SqQueue Q;
InitQueue(&Q);
EnQueue(&Q,1);
EnQueue(&Q,2);
EnQueue(&Q,3);
EnQueue(&Q,4);
EnQueue(&Q,5);
EnQueue(&Q,6);
EnQueue(&Q,7);
EnQueue(&Q,8);
Printf(&Q);
}