📄 sequeue.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];//数据存储区
int front;//队头
int rear;//队尾指针
}SeQueue;
SeQueue SeQueueInit()//队列初始化
{
SeQueue q;
q.front=q.rear=0;
return q;
}
SeQueue SeQueueIn(SeQueue q,int x)//入队
{
if ((q.rear+1)%MAXSIZE==q.front)
{
printf("队满!\n");
exit(0);
}
else
{
q.data[q.rear]=x;//入队
q.rear=(q.rear+1)%MAXSIZE;//计算机队尾位置
}
return q;
}
SeQueue SeQueueOut(SeQueue q)//出队
{
int x;
if(q.front==q.rear)
{
printf("队空\n");
exit(0);
}
else
{
x=q.data[q.front];
q.front=(q.front+1)%MAXSIZE;
printf("出队元素:%d\n",x);
}
return q;
}
int SeQueueEmpty(SeQueue q)//判空
{
if (q.front==q.rear)
return 1;
else
return 0;
}
int SeQueueLength(SeQueue q)//求长度
{
return((q.rear-q.front+MAXSIZE)%MAXSIZE);
}
int SeQueueGetHead(SeQueue q)
{
int sq;
if (q.front==q.rear)
sq=-1;
else
sq=q.data[q.front];
return (sq);
}
void SeQueueDisplay(SeQueue q)//显示队列
{
int s;
s=q.front;
printf("the sequeue is display:\n");
if (q.front==q.rear)
printf("the sequeue is empty!");
else
{
while (s<q.rear)
{
printf("%d->",q.data[s]);
s=(s+1)%MAXSIZE;
}
}
}
int main()
{
SeQueue q;
int i;
int num,se;
int flag=1;
char ch;
int select;
int in;
int gh;
int lh;
printf("create a empty sequeue\n");
q=SeQueueInit();
printf("please input the sequeue length:\n");
scanf("%d",&num);
for (i=0;i<num;i++)
{
printf("please input a sequeue value:\n");
scanf("%d",&se);
q=SeQueueIn(q,se);
}
printf("sequeue->rear:%d\n",q.rear);
printf("sequeue->front:%d\n",q.front);
SeQueueDisplay(q);
printf("\n");
while (flag)
{
printf("select 1 **** SeQueueIn() \n");
printf("select 2 **** SeQueueOut() \n");
printf("select 3 **** SeQueueEmpty() \n");
printf("select 4 **** SeQueueGetHead() \n");
printf("select 5 **** SeQueueLength() \n");
printf("select 6 **** SeQueueDisplay() \n");
printf("please select (1--6):");
scanf("%d",&select);
switch(select)
{
case 1:
printf("please input a value :\n ");
scanf("%d",&in);
q=SeQueueIn(q,in);
printf("sequeue->rear:%d\n",q.rear);
printf("sequeue->front:%d\n",q.front);
SeQueueDisplay(q);
break;
case 2:
q=SeQueueOut(q);
printf("sequeue->rear:%d\n",q.rear);
printf("sequeue->front:%d\n",q.front);
SeQueueDisplay(q);
break;
case 3:
if(SeQueueEmpty(q))
printf("the sequeue is empty");
else
printf("the sequeue is not empty");
break;
case 4:
gh=SeQueueGetHead(q);
printf("队头:%d\n",gh);
break;
case 5:
lh=SeQueueLength(q);
printf("队列长度:%d\n",lh);
break;
case 6:
SeQueueDisplay(q);
break;
}
printf("继续操作(Y|N)");
getchar();
ch=getchar();
if ((ch=='n')||(ch=='N'))
flag=0;
else
flag=1;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -