用循环单链表实现循环队列,写出插入,和删除的算法,只要这两个函数的算法就行了,有头尾指针.主函数什么的都不用写,只写这两个算法!急!急!急!
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 02:12:50
![用循环单链表实现循环队列,写出插入,和删除的算法,只要这两个函数的算法就行了,有头尾指针.主函数什么的都不用写,只写这两个算法!急!急!急!](/uploads/image/z/10135214-62-4.jpg?t=%E7%94%A8%E5%BE%AA%E7%8E%AF%E5%8D%95%E9%93%BE%E8%A1%A8%E5%AE%9E%E7%8E%B0%E5%BE%AA%E7%8E%AF%E9%98%9F%E5%88%97%2C%E5%86%99%E5%87%BA%E6%8F%92%E5%85%A5%2C%E5%92%8C%E5%88%A0%E9%99%A4%E7%9A%84%E7%AE%97%E6%B3%95%2C%E5%8F%AA%E8%A6%81%E8%BF%99%E4%B8%A4%E4%B8%AA%E5%87%BD%E6%95%B0%E7%9A%84%E7%AE%97%E6%B3%95%E5%B0%B1%E8%A1%8C%E4%BA%86%2C%E6%9C%89%E5%A4%B4%E5%B0%BE%E6%8C%87%E9%92%88.%E4%B8%BB%E5%87%BD%E6%95%B0%E4%BB%80%E4%B9%88%E7%9A%84%E9%83%BD%E4%B8%8D%E7%94%A8%E5%86%99%2C%E5%8F%AA%E5%86%99%E8%BF%99%E4%B8%A4%E4%B8%AA%E7%AE%97%E6%B3%95%21%E6%80%A5%21%E6%80%A5%21%E6%80%A5%21)
用循环单链表实现循环队列,写出插入,和删除的算法,只要这两个函数的算法就行了,有头尾指针.主函数什么的都不用写,只写这两个算法!急!急!急!
用循环单链表实现循环队列,写出插入,和删除的算法,只要这两个函数的算法就行了,有头尾指针.
主函数什么的都不用写,只写这两个算法!急!急!急!
用循环单链表实现循环队列,写出插入,和删除的算法,只要这两个函数的算法就行了,有头尾指针.主函数什么的都不用写,只写这两个算法!急!急!急!
先写个循环链表的实现
然后 C++ 用继承
C就组合吧,下面写个C的实现
typedef struct CircleListNode{
Datatype d;
struct CircleList *pre,*nxt;
}*CircleList,CirListNode;
typedef struct
{
CircleList Head;
int num;
}CircleQueue;
void insertFront(CircleList *L,d);
{
if(!L)return NULL;
if(*L==NULL)
{
*L=(CircleList) malloc(sizeof(CirListNode));
*L->nxt= *L->pre=*L ;
*L->d=d;
}
else
{
CircleList p =(CircleList) malloc(sizeof(CirListNode));
p->nxt=*L;
p->pre=*L->pre;
*L->pre->nxt=p;
*L->pre=p;
*L=p;
}
}
void DeleteBack(CircleList *L)
{ CircleList r=*L->pre;
if(*L->nxt =*L){ free(*L);*L=NULL;return ;}
r->pre->nxt =*L;
*L->pre=r->pre;
free(r);
}
void InsertQueue(CircleQueue *que,Datatype d)
{
if(!que)return;
insertFront(&que->Head,d);
que->num ++;
}
void DeletQueue(CircleQueue *que)
{
if(que->num>0)
{
DeleteBack(&que->Head);
que->num--;
}
}
void InitQueue(CircleQueue *que)
{
if(!que)return;
que->Head=NULL;
que->num=0;
}
Datatype * GetBackData(const CircleQueue *que)
{
if(!que)return NULL;
if(!que->Head)return NULL;
if(que->numHead->pre->d);
}
void ClearQueue(CircleQueue *que)
{
if(!que)return ;
while(que->num>0)
{
DeletQueue(que);
}
}