数据结构之---C语言实现循环队列
//循环队列 //杨鑫 #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; }
结果如图:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。