當前位置:首頁 » 編程語言 » 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--;
}