#define _TEST_STRUCT_C
//结构体定义
struct Student
{
//业务数据
const char name[32];
int id;
int classID;
//下面的字段纯粹是为了建立链表用
struct TstField
{
struct Student *sle_next;
} MyField;
LIST_ENTRY(Student) ListField;
SIMPLEQ_ENTRY(Student) SQueueField;
};
void* NewStudent();
#endif
#ifndef _TEST_SQUEUE_C
#define _TEST_SQUEUE_C
#include "innerStruct.h"
SIMPLEQ_HEAD(StudentQueue,Student) sutQueueHead;
//struct StudentQueue sutQueueHead;
void TestQueue();
static void OutputAll();
#endif
#include <stdio.h>
#include "queue.h"
#include "SimpleQueue.h"
void TestQueue()
{
struct Student *stu;
struct Student *stu1;
struct Student *stu2;
char tem[32];
int i;
SIMPLEQ_INIT(&sutQueueHead);
//进入队列
for(i=0;i<10;i++)
{
stu=NewStudent();
if(NULL==stu){return;}
stu->classID=i;
stu->id=100;
sprintf(tem,"jiayp%d",i+1);
strcpy(stu->name,tem);
SIMPLEQ_INSERT_TAIL(&sutQueueHead,stu,SQueueField);
}
OutputAll();
//输出队列
stu=SIMPLEQ_FIRST(&sutQueueHead);
while(NULL!=stu)
{
printf(stu->name);
printf("\r\n");
SIMPLEQ_REMOVE_HEAD(&sutQueueHead,stu,SQueueField);
free(stu);
stu=SIMPLEQ_FIRST(&sutQueueHead);
}
}
static void OutputAll()
{
struct Student *stu3;
SIMPLEQ_FOREACH(stu3,&sutQueueHead,SQueueField)
{
printf(stu3->name);
printf("\r\n");
}
printf("\r\n");
}