顺序队列的基本操作

逃离我推掉我的手 2022-09-20 12:43 187阅读 0赞

/*顺序队的基本操作*/
#include
#include
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType queue[MaxSize];
int front,rear;
} queuetype;
void initqueue(queuetype *Q)
{
Q->front=Q->rear=-1;
}
void enter(queuetype *Q,ElemType x)
{
if (Q->rear==MaxSize) printf(“队列上溢出!/n”);
else
{
Q->rear++; /*队尾指针后移*/
Q->queue[Q->rear]=x; /*新元素赋给队尾单元*/
}
}
void ddelete(queuetype *Q)
{
if (Q->front==Q->rear)
printf(“队列为空!/n”);
else
Q->front++;
}

ElemType gethead(queuetype *Q)
{
if (Q->front==Q->rear)
printf(“队列为空!/n”);
else
return(Q->queue[Q->front+1]);
}
// *//*
int empty(queuetype *Q)
{
if (Q->front==Q->rear) return(1); /*为空,则返回true*/
else return(0); /*不为空,则返回flase*/
}
void display(queuetype *Q)
{
int i;
printf(“队列元素:”);
for (i=Q->front+1;i<=Q->rear;i++)
printf(“%c “,Q->queue[i]);
printf(“/n”);
}
void main()
{
queuetype *qu;
qu = (queuetype *)malloc(sizeof(queuetype));

printf(“初始化队列qu/n”);
initqueue(qu);
printf(“队列空:%d/n”,empty(qu));
printf(“依次入队a,b,c,d元素/n”);
enter(qu,’a’);
enter(qu,’b’);
enter(qu,’c’);
enter(qu,’d’);
display(qu);
printf(“出队一次/n”);
ddelete(qu);
printf(“队首元素:%c/n”,gethead(qu));
printf(“出队一次/n”);
ddelete(qu);
display(qu);
}

发表评论

表情:
评论列表 (有 0 条评论,187人围观)

还没有评论,来说两句吧...

相关阅读

    相关 基本操作

    目录 一、什么是队列? 二、用数组实现队列 代码实现: 数组实现的缺点: 三、用链表实现队列 代码实现: -------------------- 一、什么

    相关 循环基本操作

    循环队列设置不同队空与队满条件的解决方案 为了解决顺序队列假溢出的问题,我们采用的方案是少用一个元素空间,此时的指针状态是队尾指针加1才与队头指针重合,于是此时队满的判定