我使用void指针在C中实现了一个基本的队列结构.程序如下:
>初始化结构 – 我设置要存储在队列中的变量类型的大小
> push – 我将指针传递给要存储的变量,然后队列为自己抓取一个副本
> front – 结构将void *返回给前面的元素.我可能只是抓住指针,或memcpy()它有一个本地副本.
结构本身看起来像这样:
struct queue { void* start; //pointer to the beginning of queue void* end; //-||- to the end size_t memsize; //size of allocated memory,in bytes size_t varsize; //size of a single variable,in bytes void* initial_pointer; //position of the start pointer before pop() operations };
start和end只是指向当前分配的内存块中某个位置的void指针.如果我在队列上推送元素,我会通过varsize递增结束指针.如果我pop(),我只是通过varsize减少结束指针.
问题:这被认为是好的还是坏的做法?为什么不)?
注意:我知道C中的队列还有很多其他选项.我只是询问这个的质量.
编辑:这里有实施:
http:// 89.70.149.19 /stuff/queue.txt(删除空格)