【データ構造】静的ループキューの動作


静的ループ・キューの操作の詳細は、次のコードを参照してください.
#include 

#define MAX_SIZE 100

typedef struct 
{
	int front;
	int rear;
	int data[MAX_SIZE];
}Queue;

//     
void initQueue(Queue * sq);
void DestoryQueue (Queue * sq); //    
void EnQueue (Queue * sq,int e); //   
void DeQueue (Queue * sq); //   
void GetHead (Queue * sq); //      
bool QueueEmpty (Queue sq); //     
void DisQueue(Queue * sq);  //        
void main ()
{
	int size = 0;
	char choice = '\0';
	Queue sQueue = {0,};

	initQueue(&sQueue);

	while (choice != 'q')
	{
		printf("******************************
"); printf("--- 1 ---
"); printf("--- 2 ---
"); printf("--- 3 ---
"); printf("--- 4 ---
"); printf("--- 5 ---
"); printf("--- 6 ---
"); printf("--- q ---
"); printf("******************************
"); scanf("
%c",&choice); switch (choice) { case '1': printf(" :"); scanf("%d",&size); for (int i = 0; i < size; i++) EnQueue (&sQueue, i+1) ; // break; case '2': DeQueue(&sQueue); break; case '3': DisQueue(&sQueue); break; case '4': if (!QueueEmpty(sQueue)) printf("
"); break; case '5': GetHead(&sQueue); break; case '6': DestoryQueue(&sQueue); break; case 'q': return; } } } /* */ void initQueue(Queue * sq) { sq->front = 0; sq->rear = 0; for (int i = 0; i < MAX_SIZE; i++) sq->data[i] = 0; } void DestoryQueue (Queue * sq) // { initQueue(sq); return; } void EnQueue (Queue * sq,int e) // { if ((sq->rear+1)% MAX_SIZE != sq->front) // { sq->data[sq->rear] = e; sq->rear = (sq->rear+1)%MAX_SIZE; // } } void DeQueue (Queue * sq) // { if (!QueueEmpty(*sq)) // sq->front = (sq->front+1)%MAX_SIZE; else return; } void GetHead (Queue * sq) // { if (!QueueEmpty(*sq)) printf(" %d
",sq->data[sq->front]); } bool QueueEmpty (Queue sq) // { if (sq.front != sq.rear) return false; else { printf(" ,
"); return true; } } void DisQueue(Queue * sq) // { if (QueueEmpty(*sq)) return; printf("
"); for (int i = sq->front; i < sq->rear; i++) { printf("%d\t",sq->data[i]); } printf("
"); }