/*queue.h*/
#ifndef QUEUE_H_
#define QUEUE_H_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int tcreate_queue(int elem_size, int *queue);
int tadd_queue_head(int queue, void *elem);
int tadd_queue_tail(int queue, void *elem) ;
int tget_queue_head(int queue, void *elem);
int tget_queue_tail(int queue, void *elem);
int tdestory_queue(int queue);
#endif
#include "queue.h"
typedef struct Node
{
void *elem;
struct Node *prev;
struct Node *next;
}QNode;
typedef struct QLink
{
int data_size;
QNode *head;
QNode *tail;
}QLink;
/************************************************
*函数功能: 创建一个队列
*参数 @elem_size 表示数据大小,传去参数
*参数 @queue表示接口的handle ,传出参数
**************************************************/
int tcreate_queue(int elem_size, int *queue)
{
QLink *Qu = NULL;
Qu = (QLink *)malloc(sizeof(QLink));
if (Qu == NULL)
{
printf("fail!/n");
return -1;
}
Qu->data_size = elem_size;
Qu->head = NULL;
Qu->tail = NULL;
*queue = (int)Qu;
return 0;
}
/*******************************************
* 函数功能: 增加结点到 队列队头
*参数@queue 接口handle,传入参数
*参数@elem,数据,传入参数
********************************************/
int tadd_queue_head(int queue, void *elem)
{
QLink *Qu = NULL;
QNode *node = NULL;
QNode *pt = NULL;
Qu = (QLink *)queue;
node = (QNode *)malloc(sizeof(QNode));
if (node == NULL)
{
printf("fail!/n");
return -1;
}
node->elem = (void *)malloc(Qu->data_size);
if(node->elem == NULL)
{
printf("fail!/n");
free(node);
return -1;
}
memcpy(node->elem, elem, Qu->data_size);
if (