问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请C语言版数据结构高手帮帮忙!

发布网友 发布时间:2023-08-07 04:55

我来回答

3个回答

热心网友 时间:2023-09-10 23:38

//参照书本,经测试,此代码可以。使用了一维数组实现循环队列。
#include<stdio.h>
#define MaxSize 10 //预设队列大小
int queue[MaxSize];
int front=0,rear=0; //队列头,队列尾
int qlen=0;

//判断是否队空
bool isEmpty()
{
if(front==rear)return true;
return false;
}

//判断是否队满
bool isFull()
{
if(qlen==MaxSize-1)return true;
return false;
}

void EnQueue() //进队列
{
if(isFull()==true)
{
printf("队列满了");
return ;
}
printf("输入进入队列的元素:");

scanf("%d",&queue[rear]);
rear=(rear+1)%MaxSize;
qlen++;//长度增加
}
void DeQueue() //出队列
{
if(isEmpty()==true)
{
printf("队列为空!\n");
return;
}
printf("出队列的元素:%d",queue[front]);
front=(front+1)%MaxSize;
qlen--;//长度减少
}

void print() //打印当前队列
{
int i;
if(qlen==0)
{
printf("队列为空!\n");
return;
}
printf("\n当前队列为:");
if(front>rear)
{
for(i=front-1;i<MaxSize;i++)
{
printf("%d ",queue[i]);
}
for(i=0;i<rear;i++)
{
printf("%d ",queue[i]);
}
}
else
{
for(i=front;i<rear;i++)
{
printf("%d ",queue[i]);
}
}

}
int main()
{
int servse=-1; //服务标识
while(servse!=0)
{
printf("\n1.元素进队\n");
printf("2.元素出列\n");
printf("3.打印队列\n");
printf("0.退出\n");
printf("选择:");
scanf("%d",&servse);
switch(servse)
{
case 1:EnQueue();break;
case 2:DeQueue();break;
case 3:print();break;
case 0:break;
}
}
}

热心网友 时间:2023-09-10 23:39

我以前做过下面这个题目,现把题目和程序给你,希望对你有所帮助
一般队列用两个指针,头指针和尾指针
判断队空为 头指针=尾指针
判断队满为 尾指针+1-头指针>len
【问题描述】
请设计一个程序模拟队列,具备初始队列、入队、出队、输出队列数据的功能。
【输入】
输入由若干行组成,每行表示一种操作。每行由一个或两个整数组成,其中第一个整数代表操作的类型:1表示初始队列操作,2表示入队操作,3表示出队操作、4表示输出队列信息,第二个整数表示操作所涉及的数据。
初始队列操作:将队列置为空并重新设置队列容量。该行第二个整数设为队列的容量。
入队操作:将该行第二个整数入队,如队列中元素个数超过队列容量则输出“Full OV”。
出队操作:正常删除队首元素,如果队列中已无任何元素,则输出“Empty OV”。
输出操作:按从队首到队尾的顺序输出队内所有元素,空队列输出“Empty”。
【输出】
根据不同的操作,输出不同的操作信息。
初始队列操作无输出信息。入队、出队如有错则输出出错信息,否则无输出信息。输出操作按从队首到队尾的顺序输出队内所有元素(元素之间用一个空格隔开)。
样例】
输入
1 2
3
2 78
2 88
2 99
3
4
3
4
2 99
4
输出
Empty OV
Full OV
88
Empty
99

程序如下
#include <stdio.h>
#include <time.h>
void main()
{int op,n,len,i,head,tail;
int a[10000]={0};
head=0;tail=0;len=0;
while(scanf("%d",&op)!=EOF)
{;
if(op==1)
{head=0;
tail=0;
scanf("%d",&n);
len=n;
}
if(op==2)
{scanf("%d",&n);
if(tail+1-head>len)printf("Full OV");
else{tail=tail+1;a[tail]=n;}
}
if(op==3)
if(head==tail)printf("Empty OV");
else head=head+1;
if(op==4)
if(head==tail)printf("Empty");
else
{for(i=head+1;i<=tail;i++)printf("%d ",a[i]);
printf("\n"); }
}

}

热心网友 时间:2023-09-10 23:39

typedef struct queue
{ int rear;
int front;
int MaxLen;
} ;
//判断队空
bool isEmpty(queue *q)
{
if(q->rear==q->front==0)
{cout<<"队列空";
return 1;
}
else return 0;
}
void isFull(queue *q)
{
if((q->rear+1)%MaxLen==q->front)
cout<<"队列满"; return 1;
}
else return 0;
}
void enQueue(queue *q, datatyped data)
{ if(isFull(q))
return false;
else
q-->base[q->rear]=data;
q-rear=(q->rear+1)%MaxLen;
}
void outQueue(queue *q)
{ if(isEmpty(q))
return false;
else
q->front=(q->front+1)%MaxLen;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁告诉我一下,韩语中,“遵命”怎么说 想开个甜品店,不知道哪里可以学习呢 如何取消微信新号绑定的手机号? 翼支付-翼建钟情活动内容是什么? 怎么参加翼支付“翼建钟情”活动? 翼支付--翼建钟情立减10元-建行这次活动有具体名额限制吗? 西凤酒是哪里的 货车总重量不超过二十吨就不算超载吗? 自卸货车上装有二十多吨货已经有四五天了对货车能伤害哪个部位? 如何回复别人的"忙里偷闲"? 一道c语言数据结构题,求解答 大佬们,求帮忙,数据结构,C语言+? 哪位大神懂C语言和数据结构啊,帮我做一下这个题吧,万分感谢。 高考总分650分好不好 身高160的女生站在身高的180男生身边估计可以到哪里? 珍珠棉多少钱一斤 最真实的海战游戏有哪些 有什么海战类的单机游戏好玩的 手机海战游戏哪个好 皮毛一体的气车坐垫可以晒吗 皮毛一体的羊毛垫子可以阳光下晾晒? 数据透视表的汇总标签能修改吗 怎样在表格中修改数据透视表 产后多久能吃藕炖排骨 刚生完孩子的产妇什么时候喝排骨汤 手机内存128g和256g哪个更实用? 128G和256G哪个比较好,为什么? 金黄色的保元酒多少钱一瓶 羽毛球初学者用 VICTOR胜利闪电系列LIGHTNING的3360好还是Kason凯胜 士兵系列SOLDIER的1186? 闪电貂羽毛球是哪家厂生产的 c语言数据结构题,求大神 急求C语言数据结构大神的帮助啊!!! 数据结构c语言,求大神帮帮忙 内蒙古适合建牛奶加工厂吗 现代的牛奶质量如何? 路易迈帝尔女包是品牌吗 中考化学35算高吗 陕西2018中考总分是多少? 上海开车到烟台要多少公里,时间,过路费,油钱 上海嘉定区到烟台莱阳市多少公里 崇明到烟台多少公里 为什么我用Premiere做相册的时候,把照片放到视频轨道上后在监视器那里看到的效果只有照片的一部分? 电视剧《十七岁不哭》中的演员乐心??? 谁有十七岁不哭国语的啊。 十七岁不哭里面高晓峰和乐心的扮演者有没有演过其它电视剧或电影,近况如何,谢谢 乌镇属于哪个省靠近哪里 我现在在杭州去乌镇近还是去苏州近 请问亲们~ 苏州到乌镇近~还是杭州到乌镇近? 旅游班车表乘坐什么时间较合适~ 乌镇里的客栈有没有推荐啊~ 大神们,求生之路2怎么修改默认模式..cfg的哪个文件 求助一下天津媒体记者怎么联系,我们再这去年干了煤改气到现在拿不到钱害得过年都没回家