冒号和他的学生们(连载23)——数据抽象 - 编程入门网
newIndex < q->count; ++newIndex) /**//* 复制到新数组 */
{
data[newIndex] = q->data[oldIndex];
oldIndex = (oldIndex + 1) % oldSize;
}
free(q->data);
q->data = data;
q->first = 0;
q->last = oldSize - 1;
q->size = newSize;
return 0;
}
int queue_add(Queue q, ItemType item)
{
if (q->count >= q->size) /**//* 超出容量后自动扩容 */
{
if (queue_resize(q) < 0) return -1; /**//* 内存不足 */
}
q->last = (q->last + 1) % q->size;
q->data[q->last] = item;
++q->count;
return 0;
}
int queue_remove(Queue q, ItemType* item)
{
if (q->count <= 0) return -1;
*item = q->data[q->first];
q->first = (q->first + 1) % q->size;
--q->count;
return 0;
}
int queue_head(Queue q, ItemType* item)
{
if (q->count <= 0) return -1;
*item = q->data[q->first];
return 0;
}
冒号和他的学生们(连载23)——数据抽象(3)时间:2011-07-03 BlogJava 郑晖“由于函数queue_resize并非公共接口,因此前面加上static,以避免被外部调用。与Java中的涵义不同,C中static函数表示文件内部函数。作为对比,我们再看看队列的链表实现。”冒号说罢投影出另两段代码—— /* 队列类型定义*/
/* 文件QueueImpl.c:队列的链表(linked list)实现 */
冒号和他的学生们(连载23)——数据抽象(4)时间:2011-07-03 BlogJava 郑晖叹号发现:“两种实现方式看起来迥然不同啊。&r |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |