数组实现的简单循环队列

#include <stdio.h>
#include <stdlib.h>
//设计一个队列的类型
typedef int Item;
struct queue
{

 Item * head;
 Item * tail;
 int lenth;
 int size;
};
void deletes(struct queue *que);
void insert(struct queue *que,Item k);
void prin(struct queue* que);
Item * add;
int main(void)
{

 //initialize the queue
 int arr[5];
 Item n[5]={1,2,3,4,5};
 Item a=10;  
 struct queue *que;
 que=(struct queue*)malloc(sizeof(struct queue));
 add=&arr[0];
 que->tail=que->head =&arr[0];
 que->size =0;
 que->lenth =5;
 for(int i=0;i<5;i++)
  insert(que,n[i]);//add an item
 prin(que);  //print the queue 
 deletes(que);//delete an item from the head
 prin(que);
 insert(que,a);
 prin(que);
 deletes(que);
 prin(que);
 insert(que,a);
 prin(que);
 insert(que,a);
 prin(que);
 return 0;
}
void deletes(struct queue *que)
{
 printf("delete an item:%d\n",*(que->head));
 (que->head)++;
 (que->size)--;
}
  
void insert(struct queue * que,Item k)
{
 printf("insert an item: %d into the queue\n",k);
 if(que->size==que->lenth )
 {
  printf("queue is full so that can not add an item\n");
  exit(1);
 } 
 *(que->tail )=k;
 (que->tail )++;
 (que->size )++;
 if(que->size==que->lenth )
  printf("queue is full\n");
 if(que->tail ==(add+que->lenth ))
  que->tail = add;
}
void prin(struct queue* que)
{
 printf("print all of items in the queue:\n");
 Item *ss;
 ss=que->head ;
 do
 {  
  printf("%d,",*(ss));
  ss++;
   if((ss)==(add +que->lenth ))
   ss =add ;
 }while(ss!=que->tail);
 printf("\n");
}
 

 

转载于:https://www.cnblogs.com/jzhao/p/3213293.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值