数据结构(使用C语言)队列

对顺序循环队列,常规的设计方法是使用队尾指针和队头指针,队尾指针用于指出当前胡队尾位置下标,队头指针用于指示当前队头位置下标。现要求:(1)设计一个使用队头指针和计数器胡... 对顺序循环队列,常规的设计方法是使用队尾指针和队头指针,队尾指针用于指出当前胡队尾位置下标,队头指针用于指示当前队头位置下标。现要求:
(1)设计一个使用队头指针和计数器胡顺序循环循环队列抽象数据类型,其中包括:初始化,入队列,出队列,取队头元素肯判断队列是否非空;
(2)编写一个主函数进行测试
展开
 我来答
金鱼8884
2015-10-29 · 知道合伙人数码行家
金鱼8884
知道合伙人数码行家
采纳数:124 获赞数:14952
学生

向TA提问 私信TA
展开全部
对顺序循环队列,常规的设计方法是使用队尾指针和队头指针,队尾指针用于指出当前胡队尾位置下标,队头指针用于指示当前队头位置下标。现要求:
(1)设计一个使用队头指针和计数器胡顺序循环循环队列抽象数据类型,其中包括:初始化,入队列,出队列,取队头元素肯判断队列是否非空;
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#include "conio.h"
#define MAX 80
typedef struct
{

int data[MAX];

int front,rear;

int num;
}SeQue;
SeQue *Init_SeQue()
{

SeQue *s;

s=new SeQue;

s->front=s->rear=MAX-1;

s->num=0;

return s;
}
int Empty_SeQue(SeQue *s)
{

if(s->num==0)

return 1;

else

return 0;
}
int In_SeQue(SeQue *s,int x)
{

if(s->num==MAX)

return 0;

else



s->rear=(s->rear+1)%MAX;

s->data[s->rear]=x;

s->num++;

return 1;



int Out_SeQue(SeQue *s,int *x)
{
if(Empty_SeQue(s))

return 0;
else
{

s->front=(s->front+1)%MAX;

*x=s->data[s->front];

s->num--;

return 1;
}
}
void Print_SeQue(SeQue *s)
{

int i,n;
i=(s->front+1)%MAX;
n=s->num;
while(n>0)
{ printf("%d ",s->data[i]);

i=(i+1)%MAX;

n--;
}
}
void main()
{

SeQue *s;

int k,flag,x;

s=Init_SeQue();

do{

printf("\\\");

printf("\\t\\t\\t循环顺序队列\");

printf("\\t\\t\\t***********************\");

printf("\\t\\t\\t**1-入队**\");

printf("\\t\\t\\t**2-出队**\");

printf("\\t\\t\\t**3-判 队 空**\");

printf("\\t\\t\\t**4-队列显示**\");

printf("\\t\\t\\t**0-返回**\");

printf("\\t\\t\\t***********************\");

printf("\\t\\t\\t 请输入菜单项(0-4):");

scanf("%d",&k);

switch(k)

{

case 1:


printf("\请输入入队元素:");


scanf("%d",&x);


flag=In_SeQue(s,x);


if(flag==0)


printf("\队满不能入队!按任意键返回..");


else


printf("\元素已入队!按任意键返回..");


getch();


system("cls");


break;

case 2:


flag=Out_SeQue(s,&x);


if(flag==0)


printf("\队列空出队失败!按任意键返回..");


else


printf("\队列头元素已出队~!按任意键返回..");


getch();


system("cls");


break;

case 3:


flag=Empty_SeQue(s);


if(flag==1)


printf("\该队列为空!按任意键返回..");


else


printf("\该队列不为空!按任意键返回..");


getch();


system("cls");


break;

case 4:


printf("\该队列元素为:");


Print_SeQue(s);


printf("\按任意键返回..");


getch();


system("cls");


break;

}

}while(k!=0);
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
百度网友eedc4fe1d
推荐于2017-10-04 · TA获得超过1055个赞
知道小有建树答主
回答量:693
采纳率:100%
帮助的人:338万
展开全部
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#include "conio.h"
#define MAX 80
typedef struct
{
int data[MAX];
int front,rear;
int num;
}SeQue;
SeQue *Init_SeQue()
{
SeQue *s;
s=new SeQue;
s->front=s->rear=MAX-1;
s->num=0;
return s;
}
int Empty_SeQue(SeQue *s)
{
if(s->num==0)
return 1;
else
return 0;
}
int In_SeQue(SeQue *s,int x)
{
if(s->num==MAX)
return 0;
else
{
s->rear=(s->rear+1)%MAX;
s->data[s->rear]=x;
s->num++;
return 1;
}
}
int Out_SeQue(SeQue *s,int *x)
{
if(Empty_SeQue(s))
return 0;
else
{
s->front=(s->front+1)%MAX;
*x=s->data[s->front];
s->num--;
return 1;
}
}
void Print_SeQue(SeQue *s)
{
int i,n;
i=(s->front+1)%MAX;
n=s->num;
while(n>0)
{ printf("%d ",s->data[i]);
i=(i+1)%MAX;
n--;
}
}
void main()
{
SeQue *s;
int k,flag,x;
s=Init_SeQue();
do{
printf("\n\n\n");
printf("\t\t\t 循环顺序队列\n");
printf("\t\t\t***********************\n");
printf("\t\t\t** 1-入 队 **\n");
printf("\t\t\t** 2-出 队 **\n");
printf("\t\t\t** 3-判 队 空 **\n");
printf("\t\t\t** 4-队列显示 **\n");
printf("\t\t\t** 0-返 回 **\n");
printf("\t\t\t***********************\n");
printf("\t\t\t 请输入菜单项(0-4):");
scanf("%d",&k);
switch(k)
{
case 1:
printf("\n请输入入队元素:");
scanf("%d",&x);
flag=In_SeQue(s,x);
if(flag==0)
printf("\n队满不能入队!按任意键返回..");
else
printf("\n元素已入队!按任意键返回..");
getch();
system("cls");
break;
case 2:
flag=Out_SeQue(s,&x);
if(flag==0)
printf("\n队列空出队失败!按任意键返回..");
else
printf("\n队列头元素已出队~!按任意键返回..");
getch();
system("cls");
break;
case 3:
flag=Empty_SeQue(s);
if(flag==1)
printf("\n该队列为空!按任意键返回..");
else
printf("\n该队列不为空!按任意键返回..");
getch();
system("cls");
break;
case 4:
printf("\n该队列元素为:");
Print_SeQue(s);
printf("\n按任意键返回..");
getch();
system("cls");
break;
}
}while(k!=0);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式