发布网友 发布时间:2022-04-20 04:51
共1个回答
热心网友 时间:2022-04-23 07:59
/*以下是一个简单的顺序队列,循环队列可在此基础上做改动即可,链式则要增加结构体*/ #include<stdio.h> #define SIZE 50/*队列最大长度*/ #define ELEMTYPE float/*队列中元素的类型,可任意*/ #define N 55/*欲向队列中插入的元素个数,若大于SIZE,则大于SIZE的部分无法插入*/ ELEMTYPE queue[SIZE];/*顺序型队列*/ int head,rear,count; void init(){ head=0;/*队头*/ rear=0;/*队尾*/ count=0;/*队列中元素个数*/ } void add(ELEMTYPE e){/*入队列*/ if(count<SIZE){ queue[rear]=e; rear++; count++; } else{ printf("队列长度为%d\n无法插入,队列满\n",SIZE); } } ELEMTYPE del(){/*出队列*/ ELEMTYPE temp; if(count!=0){ count--; temp=queue[head]; head++; return temp; } else{ printf("队列已空\n"); return 0; } } ELEMTYPE getHead(){/*取队列头元素,只取其值,并不出队列*/ if(count!=0) return queue[head]; else{ printf("队列已空\n"); return 0; } } int empty(){/*空否,若队列空,则为真*/ return count==0; } void main(){ int i; init(); for(i=0;i<N;i++){ add((ELEMTYPE)i); } printf("队列头元素为:%f\n",getHead());/*注意输出格式与ELEMTYPE匹配*/ while(!empty()){ printf("%f\n",del());/*注意在输出时,保持输出格式与队列数据类型相对应*/ } }