标签:creat style tmp included free list des 简单 printf
// linkqueue.h #ifndef SEQQUEUE_H_INCLUDED #define SEQQUEUE_H_INCLUDED typedef void linkQueue; linkQueue* linkQueue_Create(); void linkQueue_Destroy(linkQueue* queue); void linkQueue_Clear(linkQueue* queue); int linkQueue_Append(linkQueue* queue, void* item); void* linkQueue_Retrieve(linkQueue* queue); void* linkQueue_Header(linkQueue* queue); int linkQueue_Length(linkQueue* queue); #endif // SEQQUEUE_H_INCLUDED
// linkqueue.c #include <stdio.h> #include <stdlib.h> #include "linkqueue.h" #include "linkList.h" typedef struct _linkQueueNode { linkListNode node; void *item; }linkQueueNode; linkQueue* linkQueue_Create() { return Creat(); } void linkQueue_Destroy(linkQueue* queue) { linkQueue_Clear(queue); Destroy(queue); } void linkQueue_Clear(linkQueue* queue) { while(linkQueue_Length(queue) > 0) { linkQueue_Retrieve(queue); } } int linkQueue_Append(linkQueue* queue, void* item) { linkQueueNode * tmp = (linkQueueNode*) malloc(sizeof(linkQueueNode)); if(tmp == NULL) return -1; //缓存起来 tmp->item = item; int ret = Insert(queue, (linkListNode*)tmp, Length(queue)); if(ret !=0 ) { free(tmp); printf("linkList Insert Err: %d\n",ret); return ret; } return 0; } void* linkQueue_Retrieve(linkQueue* queue) { linkQueueNode * tmp = (linkQueueNode *)Delete(queue, 0); if(tmp==NULL) { return NULL; } void *item = tmp->item; free(tmp); return item; } void* linkQueue_Header(linkQueue* queue) { linkQueueNode* tmp = (linkQueueNode*)Get(queue, 0); if(tmp==NULL) return NULL; return tmp->item; } int linkQueue_Length(linkQueue* queue) { return Length(queue); }
除了适配这一环节,其他部分都是调用底层linkList的函数。
标签:creat style tmp included free list des 简单 printf
原文地址:https://www.cnblogs.com/randyniu/p/9192071.html