...判断循环队列空或满的依据,写出循环队列中插入和删除的算法...
发布网友
发布时间:2024-10-13 02:16
我来回答
共2个回答
热心网友
时间:2024-10-13 02:12
vb中没有标志变量这种类型,这只是程序员编程中的一个小技巧,举例说明:
判断一个数是否是素数,通常采用方法是,从2一直除到自身-1,如果都不能被整除,那么就是素数,这里用一个标志变量来确认:
dim
flag
as
boolean
'定义一个标志
flag=false
'初始化值=true,先假定它是素数
a=139
'判断a是否素数
for
i=2
to
a-1
if
a
mod
i=0
then
flag=false
'如果a能被任意一个数整除,则标志变量=false
next
if
flag=true
then
msgbox
a
&
"是素数"
'判断标志变量的值,即可知道a是否曾经被整除过
热心网友
时间:2024-10-13 02:12
先写个循环链表的实现
然后
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->num<=0)return
NULL;
return
&(que->Head->pre->d);
}
void
ClearQueue(CircleQueue
*que)
{
if(!que)return
;
while(que->num>0)
{
DeletQueue(que);
}
}