CycleQueue--循环队列(c语言简单实现)

 1 #include<stdlib.h>
 2
 3 #define SIZE 10
 4 typedef char ele;
 5
 6 typedef struct{
 7     ele *e;
 8     int front;
 9     int rear;
10 }cycleQueue;
11
12
13 //initQueue
14 void initQueue(cycleQueue *q){
15     q = (cycleQueue *)malloc(sizeof(cycleQueue));
16     q->e = (ele *)malloc(SIZE*sizeof(ele));
17     q->front=q->rear=0;
18 }
19
20 //insertQueue
21 void insertQueue(cycleQueue *q,ele e){
22     if(q->front==(q->rear+1)%SIZE)return;
23     q->e[q->rear]=e;
24     q->rear=(q->rear+1)%SIZE;
25 }
26
27 //popQueue
28 ele popQueue(cycleQueue *q){
29     if(q->front==q->rear)return NULL;
30     ele e = q->e[q->front];
31     q->front=(q->front+1)%SIZE;
32     return e;
33 }
时间: 2024-12-30 18:24:10

CycleQueue--循环队列(c语言简单实现)的相关文章

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

    队列是一种先入先出的结构,数据从队列头出,队尾进.在linux内核中进程调度,打印缓冲区都有用到队列.     队列有多种实现方式,可以用链表,也可以用数组.这里用数组来实现一个简单的循环队列.首先创建一个大小为8的队列如下,队列头尾指针指向同一块内存,          当从队列尾部插入一个数据后变成下面的情形,为了便于处理,这里始终会浪费一个空间 继续插入数据,直到出现以下情形,表示队列满了, 接下来看一下出队的情形,从队列头出队3个元素, 再添加三个元素后队列又变成满的了, 在上面

静态数组实现循环队列 c语言

#include<stdio.h> #include<malloc.h> #define Data_Type int #define Queue_Len 5 //判断队满有两种方式,一种是加以个标记,比如说size. //另一种是浪费一块空间,当占到N-1时,就算满. typedef struct Queue{ Data_Type data[Queue_Len]; int front;//队头元素的前一个元素 int rear;// 队尾元素 //int size; 记录队列的大小

数据结构算法C语言实现(十二)--- 3.4循环队列&amp;队列的顺序表示和实现

一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 1 //3_4_part1.h 2 /** 3 author:zhaoyu 4 email:[email protected] 5 date:2016-6-9 6 note:realize my textbook <<数据结构(C语言版)>> 7 */ 8 //Page 64 9 #include <cstdio

C语言实现使用动态数组实现循环队列

我在上一篇博客<C语言实现使用静态数组实现循环队列>中实现了使用静态数组来模拟队列的操作.由于数组的大小已经被指定,无法动态的扩展.所以在这篇博客中,我换成动态数组来实现.动态数组可以不断开辟内存空间,只是会在数组的初始化时有所不同,其他对数组的操作都是一样的.代码上传至 https://github.com/chenyufeng1991/Queue_DynamicArray . (1)声明变量 static int *queue;//声明数组 static int maxSize;//数组大

顺序循环队列的c语言实现

1. 循环队列的顺序存储结构 typedef struct { QElemType data[MAXSIZE]; int front; /* 头指针 */ int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */ }SqQueue; 2. 初始化一个空队列Q Status InitQueue(SqQueue *Q) { Q->front=0; Q->rear=0; return OK; } 3.将Q清为空队列 Status ClearQueue(SqQueue *Q) {

C语言——循环队列的基本运算

#include <stdio.h> #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20; typedef struct cycque { int data[maxsize]; int front, rear; }CycQue; */ // 1. 初始化 void InitQueue(CycQue CQ) { CQ.front = 0; CQ.rear = 0; } // 2. 判断队空 int EmptyQ

简单的循环队列

#include<stdio.h>#include<malloc.h> #define max 10 typedef struct node{int queue[max];int front,rear;}q,*queue;void init(queue p){p->front=-1;p->rear=-1;} int empty(queue p){if(p->front==p->rear){printf("队列为空\n");return 1

C语言实现循环队列(基本操作及图示)

-------------------------------------------- 如果使用顺序表作为队列的话,当处于右图状态则不能继续插入新的队尾元素,否则会因为数组越界而导致程序代码被破坏. 由此产生了由链表实现的循环队列,只有队列未满时才可以插入新的队尾元素. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

数据结构之---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)->