1鼻疮、頭文件SqQueue.h
#include <stdio.h>
#define MAXSIZE 100
typedef struct SqQuene
{
int rear;
void* data[MAXSIZE];
}SqQuene;
void InitQuene(SqQuene*);
int QueneEmpty(SqQuene*);
int QueneLength(SqQuene*);
void GetFront(SqQuene*, void**);
void EnQuene(SqQuene*, void*);
void DeQuene(SqQuene*, void**);
void ClearQuene(SqQuene*);
2假勿、相關(guān)操作函數(shù)文件SqQueue.c
#include <stdio.h>
#include <string.h>
#include "SqQuene.h"
void InitQuene(SqQuene* sq)
{
sq->rear = -1;
memset(sq->data, 0, sizeof(sq->data));
}
int QueneEmpty(SqQuene* sq)
{
if(sq->rear == -1)
return 1;
return 0;
}
int QueneLength(SqQuene* sq)
{
return sq->rear + 1;
}
void ClearQuene(SqQuene* sq)
{
sq->rear = -1;
}
void GetFront(SqQuene* sq, void** e)
{
if(sq->rear == -1)
{
printf("隊(duì)列為空借嗽,無(wú)法出隊(duì)!\n");
return;
}
*e = sq->data[0];
}
void EnQuene(SqQuene* sq, void* e)
{
if(sq->rear == MAXSIZE - 1)
{
printf("隊(duì)列已滿(mǎn)转培,無(wú)法入隊(duì)恶导!\n");
return;
}
sq->rear++;
sq->data[sq->rear] = e;
}
void DeQuene(SqQuene* sq, void** e)
{
if(sq->rear == -1)
{
printf("空隊(duì)列,無(wú)法出隊(duì)浸须!\n");
return;
}
*e = sq->data[0];
int i = 1;
for(i = 1; i <= sq->rear; i++)
{
sq->data[i-1] = sq->data[i];
}
sq->rear--;
}
3惨寿、主函數(shù)main.c
#include <stdio.h>
#include <stdlib.h>
#include "SqQuene.h"
typedef struct stu
{
int id;
int age;
}Student;
int main()
{
SqQuene sq;
InitQuene(&sq);
Student s[10];
int i = 0;
for(i = 0; i < 10; i++)
{
s[i].id = i;
s[i].age = i + 20;
}
for(i = 0; i < 10; i++)
{
EnQuene(&sq, &s[i]);
}
printf("The size of Quene: %d\n", QueneLength(&sq));
while(!QueneEmpty(&sq))
{
Student* tmp;
GetFront(&sq, (void**)&tmp);
printf("當(dāng)前隊(duì)頭元素值為:%d, %d\n", tmp->id, tmp->age);
//printf("當(dāng)前隊(duì)頭的元素值為:id = %d, age = %d\n", tmp->id, tmp->age);
DeQuene(&sq, (void**)&tmp);
printf("當(dāng)前出隊(duì)的元素值為:id = %d, age = %d\n", tmp->id, tmp->age);
printf("\n");
}
EnQuene(&sq, &s[0]);
ClearQuene(&sq);
printf("The size of Quene: %d\n", QueneLength(&sq));
return 0;
}