当前位置:首页 » 编程语言 » c语言数组队列
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数组队列

发布时间: 2022-03-12 11:51:53

c语言用数组实现顺序队列求大神帮助

#include "stdio.h" main() { int que[200] = {0} ; int start = 0, end = 0; int i; char ch; printf("please enter 6 num:"); for(i=0;i<6;i++) scanf("%d",&que[i]); end = 5; for(i=start;i<=end;i++) printf("%d ",que[i]); printf("\n"); while(1) { printf("What do you want to do? \n'i' to insert\n'd' to delete\n'q' to quit\n"); switch(ch = getch()) { case 'i': end++; printf("please enter the num:"); scanf("%d",&que[end]); for(i=start;i<=end;i++) printf("%d ",que[i]); printf("\n"); break; case 'd': start++; for(i=start;i<=end;i++) printf("%d ",que[i]); printf("\n"); break; case 'q': exit(0); } } }

⑵ C语言用数组实现循环队列的入队出队

//定义一个int型数组que,长度为N(常量切大于2).
intque[N];
intrear=0,front=0;//队尾队头

判断队列已满:

if((front+1)%N==rear%N)//成立则队列已满

判断队列为空

if((rear==front))//成立则队列空

入队(一般在入队前判断队列是否已满)

//将val入队
que[front++]=val;
front%=N;

出队(一般在出队前判断队列是否为空)

rear=(rear+1)%N;

下一个要出队的元素(一般先判断是否为空)

que[rear];

⑶ C语言,请用数组作个循环队列

a#include
"Stdio.h"
#include
<stdlib.h>
#include
"Conio.h"
#include
"malloc.h"
#define
TRUE
1
#define
FALSE
0
#define
INFEASIBLE
1
#define
OVERFLOW
-2
#define
OK
1
#define
ERROR
0
#define
MAXQSEZE
100
/*最大队列长度*/
typedef
int
QElemType;
typedef
int
Status;
typedef
struct{

QElemType
*base;
/*初始化的动态分配存储空间*/

int
front;
/*头指针,若队列不空,指向队列头元素*/

int
rear;
/*尾指针,若队列不空,指向队列尾元素的下一位置*/
}SqQueue;
Status
Queuelength(SqQueue
*Q){

/*构造一个空的循环队列*/

Q->base=(QElemType
*)malloc(MAXQSEZE*sizeof(SqQueue));

if(!Q->base)
exit(OVERFLOW);
/*存储分配失败*/

Q->front=Q->rear=0;

return
OK;
}
Status
EnQueue(SqQueue
*Q,QElemType
e){

/*插入元素e为Q的新的队尾元素*/

if((Q->rear+1)%MAXQSEZE==Q->front)
return
ERROR;/*队列满*/

Q->base[Q->rear]=e;

Q->rear=(Q->rear+1)%MAXQSEZE;

return
OK;
}
Status
DeQueue(SqQueue
*Q,QElemType
*e){

/*若队列不空,则删除Q的队头元素,用e返回其值*/

/*否则返回ERROR*/

if(Q->front==Q->rear)
return
ERROR;

*e=Q->base[Q->front];

Q->front=(Q->front+1)%MAXQSEZE;

return
OK;
}
Status
GetHead(SqQueue
*Q,QElemType
*e){

/*队列不为空用e返回Q的头元素,并返回OK,否则返回ERROR*/

if(Q->front==Q->rear)
return
ERROR;

*e=Q->base[Q->front];
return
OK;
}
Status
QueueEmpty(SqQueue
*Q){

/*队列为空时返回OK否则返回FALSE*/

if(Q->front==Q->rear)
return
OK;

return
FALSE;
}
void
yanghuiTriangle(int
n){

/*打印输出杨辉三角的钱n(n>0)行*/

SqQueue
Q;

char
ch='
';

int
i,k;

QElemType
s,e;

FILE
*fq;

if((fq=fopen("output.txt","w"))==NULL){
/*打开写入文件*/

printf("error
on
open\n");

exit
(1);

}

Queuelength(&Q);
/*创建空的队列*/

for(i=1;i<n;i++)

{
printf("
");
fputc(ch,fq);}
/*输出n个空格以保持三角形的队形*/

printf("1\n");

fprintf(fq,"%d\n",1);

EnQueue(&Q,0);
/*添加第一行末尾的行分界0并入队*/

EnQueue(&Q,1);
/*第二行的两个1值入队列*/

EnQueue(&Q,1);

k=2;

while(k<n){
/*通过循环队列输出第2行到第n-1行的值*/

for(i=1;i<=n-k;i++)

{printf("
");
fputc(ch,fq);}
/*输出n-k个空格以保持三角形*/

EnQueue(&Q,0);

do{
/*输出第k行,计算第k+1行*/

DeQueue(&Q,&s);

GetHead(&Q,&e);

if(e)
/*若e为非行分界值0,则打印输出e的值,并加一空格*/

{printf("%d
",e);
fprintf(fq,"%d%c",e,ch);
}

else

{
printf("\n");
fputc('\n',fq);}
/*回车换行,为下一行输出做准备*/

EnQueue(&Q,s+e);
/*计算所得抵k+1行的值入队列*/

}while(e!=0);

k++;

}

DeQueue(&Q,&e);
/*行界值“0“出队列*/

while(!QueueEmpty(&Q)){
/*单独处理第n行的值的输出*/

DeQueue(&Q,&e);

{
printf("%d
",e);
fprintf(fq,"%d%c",e,ch);
}

}
}
int
main(void)
{

FILE
*
fp;

QElemType
n;

if((fp=fopen("input.txt","r"))==NULL){
/*打开写入文件*/

printf("error
on
open\n");

exit
(1);

}

fscanf(fp,"%d",&n);
/*读入n*/

fclose(fp);

yanghuiTriangle(n);

getch();

return
0;
}
用一个文件输入一个N,这个数位杨辉三角的行数上面是用循环队列做的,你看看

⑷ C语言中,队列是什么意思,有什么用途

队列是一种特殊的线性表。

队列一种可以实现“先进先出”的存储结构,即“一端入,一端出”,队首(front)出队,队尾(rear)入队,若front指向队首,则rear指向队尾最后一个有效元素的下一个元素;若rear指向队尾,则front指向队首第一个有效元素的下一个元素。

队列特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

(4)c语言数组队列扩展阅读

循环队列各个参数的含义

1、队列初始化front和rear的值都是零,初始化时队列就是空的。

2、队列非空front代表队列的第一个元素rear代表了最后一个有效元素的下一个元素。

3、队列空front和rear的值相等,但是不一定是零。

⑸ c语言循环队列

队列是一种特殊的线性表,循环队列是将向量空间想象为一个首尾相接的圆环。

队列是一个特殊的线性表,它的特殊之处在于它只允许表的前面的操作删除,而在表的后面的操作插入,就像堆栈一样,队列100是一个线性表,具有有限的操作。

循环队列就是把向量空间想象成一个首尾相连的环,把这样的向量称为循环向量。存储学位的队列称为循环队列。

在顺序队列中,当指向队列末端的指针到达数组的上界时,不能有更多的队列条目,但数组中仍然有一个空位置。这称为“假溢出”。

(5)c语言数组队列扩展阅读:

判断满队列状态:

1.计数;你通常使用count

Count等于队列的MAXSIZE

2.国旗int

Queueinflag=1Queueoutflag=0

= && flag = = 0的前面和后面

3.放一个存储应答单元为空,不存储数据

后面+1=前面

注:(不)顺序结构,SeqQueuemyQueue;

⑹ 关于C语言的队列

可以使用c++中的容器如queue,头文件在#include <queue>

⑺ c语言用数组做循环接收队列的问题

for (i=CAN_recv_head,INC3(i);i!=CAN_recv_head;INC3(i)) 后面有没有;?
或者if(id3==CAN_recv_queue[i]) IRET //收到重复包 后面缺少{}?

如果for (i=CAN_recv_head,INC3(i);i!=CAN_recv_head;INC3(i)) 后面有;,
可能是进行队列遍历,等待外部中断,如果队列遍历一圈都没等到外部中断,就退出for语句,后面估计有延时错误处理,

如果for语句后面没有;,那就是和if语句一起的,则if语句后面可能缺少{},
那么for语句就是防止接收循环队列溢出

⑻ C语言数组 队列

intpoint[2][10]={0};
voidaddline(x,y)
{
inti;
for(i=0;i<10;i++)
if(point[1][i]==0&&point[2][i]==0)
break;
if(i<10)
{
point[1][i]=x;
point[2][i]=y;
}
else
{
for(i=0;i<9;i++)
{
point[1][i]=point[1][i+1];
point[2][i]=point[2][i+1];

point[1][9]=x;
point[2][9]=y;
}
}

存进去的坐标不能是0,0

⑼ c语言环形队列 链表 和数组的区别

队列先进先出 适合用于排序
链表适合用于存储
C的数组就是指针 适合用于查询

⑽ C语言,用数组实现队列的入队,出队函数编程

这样的话应该符合你的要求:

#include<stdio.h>
voidadd(intqueue[],intx);
intTop(intqueue[]);
voiddel(intqueue[]);
intend=0;
intmain()
{
intn;
scanf("%d",&n);//将要入队列n个元素
intqueue[1000];
for(inti=1;i<=n;i++)//输入n个元素
{
add(queue,i);//将i加入队列
}
//验证加入队列的元素,将队列中的元素按照输入的顺序输出:
for(i=1;i<=n;i++)
{
printf("%d",Top(queue));//Top函数返回队头元素
del(queue);//删除队头元素
}
//验证输出已经出队列后的队列(数组)元素:
printf(" ");
for(i=1;i<=n;i++)
printf("%d",queue[i]);
printf(" ");
return0;
}
voidadd(intqueue[],intx)
{
queue[++end]=x;
}
intTop(intqueue[])
{
returnqueue[1];//注意,这里的函数始终returnqueue[1];这里是和将普通数组中的元素输出最大的不同之处。!!!!!!
}
voiddel(intqueue[])
{
for(inti=2;i<=end;i++)
{
queue[i-1]=queue[i];
}
queue[end]=0;//将删除后的地方置0
end--;
}