#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;
TAILQ_ENTRY(Student) TQueueField;
};
void* NewStudent();
#endif
#ifndef _TEST_TaileQueue_C
#define _TEST_TaileQueue_C
#include "innerStruct.h"
TAILQ_HEAD(StudentTaileQueue,Student);
struct StudentTaileQueue sutTQHead;
void TestTQueue();
static void OutputAll();
static void OutputAllR();
#endif
#include <stdio.h>
#include "queue.h"
#include "TaileQueue.h"
void TestTQueue()
{
struct Student *stu;
struct Student *stu1;
struct Student *stu2;
char tem[32];
int i;
TAILQ_INIT(&sutTQHead);
//进入队列
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);
TAILQ_INSERT_TAIL(&sutTQHead,stu,TQueueField);
}
OutputAll();
OutputAllR();
//TQueueField
}
void OutputAll()
{
struct Student *stu3;
TAILQ_FOREACH(stu3,&sutTQHead,TQueueField)
{
printf(stu3->name);
printf("\r\n");
}
printf("\r\n");
}
void OutputAllR()
{
struct Student *stu3;
TAILQ_FOREACH_REVERSE(stu3,&sutTQHead,StudentTaileQueue,TQueueField)
{
printf(stu3->name);
printf("\r\n");
}
printf("\r\n");
}