#pragma once #include <stdlib.h>#include <string.h>typedefstruct _NODE{
int index;
char* name;
struct _NODE* next;
}NODE;
typedefstruct _QUEUE{
int size;
NODE* front;//队头
NODE* back;//队尾
}QUEUE;
int push_back(QUEUE* queue, NODE nodes);
int insert(QUEUE* queue, int index, constchar* name);
int pop_front(QUEUE* queue);
int empty(QUEUE queue);
int size(QUEUE queue);
int clear(QUEUE* queue);
void show(QUEUE queue);
#include"Queue.h"//入队
int push_back(QUEUE*queue, NODE nodes){
NODE* node = (NODE*)malloc(sizeof(NODE));
memset(node, 0, sizeof(NODE));
node->name = (char*)malloc(8);
memset(node->name, 0, sizeof(node->name));
node->index = nodes.index;
strcpy(node->name, nodes.name);
node->next =NULL;
if (queue->front ==NULL)
{
queue->front = node;
queue->back = node;
return1;
}
for (NODE* p =queue->front;; p = p->next)
{
if (p->next ==NULL)
{
p->next = node;
queue->back = node;
return1;
}
}
return0;
}
//插入
int insert(QUEUE*queue, int index, const char* name){
NODE* node = (NODE*)malloc(sizeof(NODE));
memset(node, 0, sizeof(NODE));
node->name = (char*)malloc(8);
memset(node->name, 0, sizeof(node->name));
node->index = index;
strcpy(node->name, name);
node->next =NULL;
return push_back(queue, *node);
}
//出队
int pop_front(QUEUE*queue){
NODE* p =queue->front;
if (p ==NULL)
{
return0;
}
if (p ==queue->back)
{
queue->back =NULL;
}
queue->front = p->next;
free(p);
return1;
}
//是否队为空
int empty(QUEUEqueue){
if (queue.front ==NULL)
{
return1;
}
return0;
}
//队元素数
int _size(QUEUEqueue){
for (NODE* p =queue.front; p !=NULL; p = p->next, queue.size++);
returnqueue.size;
}
//清空
int clear(QUEUE*queue){
for (; pop_front(queue) !=0;);
return1;
}
//打印void show(QUEUEqueue){
for (NODE* p =queue.front; p !=NULL; p = p->next)
{
printf("%d %s\n",p->index,p->name);
}
}