队列
队列是一种特殊的线性结构,它只允许在队列的首部head进行删除,以及在尾部tail进行插入
这两种操作分别被称为“出队”和“入队”。而当队列中没有元素即head=tail时,称其为“空队列”
我们现在可以将队列的三个基本元素(一个数组,两个变量)封装为一个结构体类型
struct queue{
int data[100] ; //存储内容的主体
int head ; //队首
int tail ; //队尾
};
//——————————————————————————
struct queuq q;//定义结构体变量,和其它数据类型一样
上面定义了以一个结构体类型,我们通常把它放在main外面,其定义末尾有一个;
其中,strcut是结构体的关键字,queue是我们为这个结构体起的名字
这个结构体有三个成员:整型数组data,整型head,tail。这样以来,我们就可以把它们当作一个整体来看待
访问结构体内的内部成员使用点(.)
下面这段代码就是我们用结构体实现队列操作的实例
代码示例
struct queue{
int data[100] ; //存储内容的主体
int head ; //队首
int tail ; //队尾
};
int main(){
struct queue q ;
int i ;
//下面初始化队列
q.head = 1 ;
q.tail = 1 ;
for(i = 1 ; i<= 9 ; i ++){
//依次向队列中插入九个数
scanf("%d",&q.data[q.tail]);
q.tail++ ;
}
while(q.head < q.tail){
//当队列不为空的时候进行这个循环操作
//打印队首并将队首出队
printf("%d",q.data[q.head]);
q.head++;
//先将新的队首的数添加到队尾
q.data[q.tail] = q.data[q.head];
q.tail++;
//再将队首出队
q.head++ ;
}
getchar();getchar();
return 0 ;
}