无锡品牌网站建设,wordpress網頁版,简述电子政务网站设计的技术,注册域名需要实名认证吗上篇博客是用顺序表实现队列, 现在用双向带头结点带环链表实现对队列的出队列, 入队列, 取队首元素, 以及销毁队列的相关操作 1.初始化链表
void DLinkQueInit(DLinkQue** q)
{if(q NULL){return;//非法输入}if(*q NULL){return;//非法输入带头结点的链表至少有一个傀儡结点…上篇博客是用顺序表实现队列, 现在用双向带头结点带环链表实现对队列的出队列, 入队列, 取队首元素, 以及销毁队列的相关操作 1.初始化链表
void DLinkQueInit(DLinkQue** q)
{if(q NULL){return;//非法输入}if(*q NULL){return;//非法输入带头结点的链表至少有一个傀儡结点}*q (DLinkQue*)malloc(sizeof(DLinkQue));(*q) - next *q;(*q) - prev *q;(*q) - data 0;
} 2.入队列
void DLinkQuePush(DLinkQue* q, DLinkQueType value)
{if(q NULL){return;//非法输入}DLinkQue* new_node DLinkQueCreatNewNode(value);DLinkQue* prev q - prev;prev - next new_node;new_node - prev prev;new_node - next q;q - prev new_node;
} 3. 出队列
void DLinkQuePop(DLinkQue* q)
{if(q NULL){return;//非法输入}if(q - next NULL){return;//非法输入带头结点的链表至少有一个傀儡结点}if(q - next q){return;//空队列}DLinkQue* to_delete q - next;DLinkQue* next to_delete - next;q - next next;next - prev q;DLinkQueDestroyNode(to_delete);to_delete NULL;
} 4. 取队首元素
int DLinkStackGetFront(DLinkStack* stack, DLinkStackType* value)
{if(stack NULL){return -1;//非法输入}if(stack - next stack){return -1;//空栈}*value (stack - prev) - data;return 0;
}int DLinkStackSize(DLinkStack* stack)
{if(stack NULL){return 0;//非法输入}if(stack - next stack){return 0;//非法输入}DLinkStack* cur stack - next;int size 0;for(; cur ! stack; cur cur - next){size;}return size;
} 5. 销毁队列
void DLinkQueDestroy(DLinkQue** q)
{if(q NULL){return;//非法输入}if(*q NULL){return;//非法输入带头结点的链表至少有一个傀儡结点}int i DLinkQueSize(*q);DLinkQue* to_delete;DLinkQue* next;for(; i 0; i--){//DLinkQuePop(*q);to_delete (*q) - next;next to_delete - next;(*q) - next next;next - prev *q;DLinkQueDestroyNode(to_delete);to_delete NULL;}DLinkQueDestroyNode(*q);*q NULL;
}