c语言版数据结构关于队列的问题
设计一个抽象数据类型队列的数据表示和实现的演示程序,其基本操作有初始化队列,判断队列空否。入队列,出队列等...
设计一个抽象数据类型队列的数据表示和实现的演示程序,其基本操作有初始化队列,判断队列空否。入队列,出队列等
展开
1个回答
2013-11-21
展开全部
/*以下是一个简单的顺序队列,循环队列可在此基础上做改动即可,链式则要增加结构体*/
#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());/*注意在输出时,保持输出格式与队列数据类型相对应*/
}
}
#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());/*注意在输出时,保持输出格式与队列数据类型相对应*/
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询