根据要求写出pqueue的工作原理
发布于 2022-03-02 15:50:25
有pqueue.h如下
#ifndef HEADER_PQUEUE_H #define HEADER_PQUEUE_H typedef struct_pqueue{ pitem *items int count }pqueue_s typedef struct_pqueue *pqueue typedef struct_pitem{ unsigned char priority[8] void *data struct_pitem *next }pitem typedef struct_pitem *piterator pitem *pitem_new(unsigned char *prio64be,void *data) void pitem_free(pitem *item) pqueue pqueue_new(void) void pqueue_free(pqueue pq) pitem *pqueue_insert(pqueue pq,pitem *item) pitem *pqueue_peek(pqueue pq) pitem *pqueue_pop(pqueue pq) pitem *pqueue_find(pqueue pq,unsigned char *prio64be) pitem *pqueue_iterator(pqueue pq) pitem *pqueue_next(piterator *iter) int pqueue_size(pqueue pq) #endif /*! HEADER_PQUEUE_H */pq_test.c如下:
#include<stdlib.h> #include<string.h> #include"pqueue.h" /*remember to change expected.txt if you change there values*/ unsigned char prio1[8]="supercal" unsigned char prio2[8]="ifragili" unsigned char prio3[8]="sticexpi" static void pqueue_print(pqueue pq) { pitem *iter,*item iter=pqueue_iterator(pq) for(item=pqueue_next(&iter)item!=NULL item=pqueue_next(&iter)){ printf("item\t%02x%02x%02x%02x%02x%02x%02x%02x\n", item ->priority[0],item->priority[1], item ->priority[2],item->priority[3], item ->priority[4],item->priority[5], item ->priority[6],item->priority[7], } } int main(void) { pitem *item pqueue pq pq=pqueue_new() item=pitem_new(prio3,NULL) pqueue_insert(pq,item) item=pitem_new(prio1,NULL) pqueue_insert(pq,item) item=pitem_new(prio2,NULL) pqueue_insert(pq,item) item=pqueue_find(pq,prio1) fprintf(stderr,"found %p\n",item->priority) item=pqueue_find(pq,prio2) fprintf(stderr,"found %p\n",item->priority) item=pqueue_find(pq,prio3) fprintf(stderr,"found %p\n",item->priority) pqueue_print(pq) for(item=pqueue_pop(pq)item!=NULLitem=pqueue_pop(pq)) pitem_free(item) pqueue_free(pq) return 0 }pq_test.sh如下:
#!/bin/sh set -e ./pq_test | cmp $srcdir/pq_expected.txt-pq_expected.txt如下:
item 6966726167696c69item 7374696365787069item 737570657263616c
1.根据测试代码描述pqueue的工作原理。
2.请实现 pitem *pqueue_insert(pqueue pq,pitem *item)
关注者
0
被浏览
23