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、相关操作函数文件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("队列为空,无法出队!\n");
return;
}
*e = sq->data[0];
}
void EnQuene(SqQuene* sq, void* e)
{
if(sq->rear == MAXSIZE - 1)
{
printf("队列已满,无法入队!\n");
return;
}
sq->rear++;
sq->data[sq->rear] = e;
}
void DeQuene(SqQuene* sq, void** e)
{
if(sq->rear == -1)
{
printf("空队列,无法出队!\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、主函数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, %d\n", tmp->id, tmp->age);
//printf("当前队头的元素值为:id = %d, age = %d\n", tmp->id, tmp->age);
DeQuene(&sq, (void**)&tmp);
printf("当前出队的元素值为: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;
}
网友评论