数据结构之---C语言实现循环队列

来源:互联网 发布:淘宝杂货铺知乎 编辑:程序博客网 时间:2024/04/29 17:53
//循环队列//杨鑫#include <stdio.h> #include <stdlib.h>#define MAXSIZE 10 typedef int QElemType;typedef struct queue{  QElemType elem[MAXSIZE];  int front;int rear;  }SqQueue; //定义队头    int init_Queue(SqQueue **q) //初始化  {  (*q)->front= 0;  (*q)->rear = 0;  }    int is_Full(SqQueue *q)  {  if(q->front == (q->rear + 1) % MAXSIZE) //判满 刘勉刚  return 1;  else  return 0;  }  int insert_Queue(SqQueue **q, QElemType elem)  {  if(is_Full(*q)) return -1;  (*q)->elem[(*q)->rear] = elem; (*q)->rear = ((*q)->rear + 1) % MAXSIZE; //插入  return 0;  }  int is_Empty(SqQueue *q)  {  if(q->front == q->rear) //判空  return 1;  else  return 0;  }  int delete_Queue(SqQueue ** q, QElemType *pelem)  {  if(is_Empty(*q))  return 0;  *pelem = (*q)->elem[(*q)->front];  (*q)->front = ((*q)->front + 1)%MAXSIZE;  return 0;  }    int main()  {  int i=0, elem, count = 0;  SqQueue *q=(SqQueue *)malloc(sizeof(SqQueue));  init_Queue(&q);  printf("=========================分割线=====================\n");printf("正在向循环队列中插入元素!\n");for(i = 0; i < 10; i++)  {  insert_Queue(&q, i);  count++;}  printf("入队完毕!\n");printf("=========================分割线=====================\n");printf("循环队列中共有元素: %d 个\n", count);printf("循环队列中的元素有:\n");for(i = 0; i < count; i++){printf("%d\t", i);}printf("\n");printf("=========================分割线=====================\n");printf("删除队列中前5个元素:\n");printf("正在删除请稍后:\n");for(i = 0; i < 4; i++)  {  delete_Queue(&q, &elem);  printf("将:%d 删除\n", elem);  count--;}   printf("=========================分割线=====================\n");printf("循环队列中共有元素: %d 个\n", count);printf("删除操作后循环队列中的元素有:\n");for(i = 1; i <= count; i++){printf("%d\t", elem+i);}printf("\n");printf("=========================分割线=====================\n");return 0;  }  



结果如图:



0 0
原创粉丝点击