队列学习笔记 顺序队列

//顺序队列操作
#define QUEUEMAX 15
typedef struct 
{
	DATA data[QUEUEMAX]; // 队列数组 
	int head;   //队头 
	int tail;   // 队尾 
 } SeqQueue;
SeqQueue *SeqQueueInit()
{
	SeqQueue *q;
	if(q=(SeqQueue *)malloc(sizeof)(SeqQueue))   // 申请保存队列的内存 
	{
		q->head = 0;  // 设置队头 
		q->tail = 0;  // 设置队尾 
		return q;
	}else
		return NUll;   // 返回空 
}
void SeqQueueFree (SeqQueue *q) // 释放队列 
{
	if(q!=NULL)
		free(q);
}
int SeqQueueIsEmpty(SeqQueue *q)  //  队列是否为空 
{
	return (q->head==q->tail);
}
int SeqQueueIsFull(SeqQueue *q)  //队列是否已满  
{
	return(q->tail==QUEUEMAX);
}
int SeqQueueLen(SeqQueue *q) // 获取队列长度 
{
	return (q->tail-q->head);
}
int SeqQueueIn(SeqQueue *q,DATA data)  //顺序队列的入队函数 
{
	if(q->tail==QUEUEMAX)
	{
		printf("队列已满!\n");
		return(0);
	}else{
		q->data[q->tail++]=data;
		return(1);
	}
}
DATA *SeqQueueOut(SeqQueue *q)  //顺序队列出队 
{
	if(q->head == q->tail)
	{
		printf("\n队列已空! \n");
		return NULL;
	}else{
		return &(q->data[q->head++]);
	}
}
DATA *SeqQueuePeek(SeqQueue *q)  //获取头元素 
{
	if(SeqQueueIsEmpty(q))
	{
		printf("\n队列为空!\n");
		return NULL;
	}
	else{
		return &(q->data[q->head]);
	}
}
时间: 2024-10-11 17:13:39

队列学习笔记 顺序队列的相关文章

队列学习笔记 循环队列

 //循环队列 //CycQueue.h #define QUEUEMAX 15 typedef struct  { DATA data[QUEUEMAX];  //队列数组  int head; //队头  int tail; //队尾  }CycQueue; CycQueue *CycQueueInit () { CycQueue *q; if(q=(CycQueue *)malloc(sizeof(CycQueue))) //申请保存队列的内存  { q->head = 0;  //设置队

python 3.x 学习笔记16 (队列queue 以及 multiprocessing模块)

1.队列(queue) 用法: import queue q = queue.Queue() #先进先出模式 q.put(1) #存放数据在q里 作用: 1)解耦    2)提高效率 class queue.Queue(maxsize=0)                        #先入先出class queue.LifoQueue(maxsize=0)                  #后进先出 class queue.PriorityQueue(maxsize=0)         

FreeRTOS学习笔记7-FreeRTOS 队列相关

在实际的应用中,常会遇到一个任务或者断服需要和另外进 在实际的应用中,常会遇到一个任务或者断服需要和另外进 行"沟通交流", 行"沟通交流", 行"沟通交流", 这个"沟通交流"的过程其实就是消息传递 这个"沟通交流"的过程其实就是消息传递 这个"沟通交流"的过程其实就是消息传递 这个"沟通交流"的过程其实就是消息传递 的过程.在 的过程.在 没有操作系统的时候两个应

RHCA学习笔记:RH442-Unit5 队列原理

NIT 5 Queuing Theory 队列原理 目标: 1.明白性能调优的关键术语 2. 应用队列技术解决性能问题 3.明白性能调优的复杂性 5.1    Introduction to queuing theory 队列原理简介 A.      Little’s Law 给出了队列原理的基础 John Little于1961年用数学证明了这个原理. B.      带来的好处: a.       可以用工程学方法来进行性能管理. b.       量化系统未来的性能 c.       说明

队列学习笔记 银行排号程序

 //循环队列  //CycQueue.h #define QUEUEMAX 15 typedef struct  { DATA data[QUEUEMAX];  //队列数组  int head; //队头  int tail; //队尾  }CycQueue; CycQueue *CycQueueInit () { CycQueue *q; if(q=(CycQueue *)malloc(sizeof(CycQueue))) //申请保存队列的内存  { q->head = 0;  //设置

Windows消息队列学习笔记

1.windows消息和消息结构 一条消息是作为一个结构传递给应用程序的,这个结构中,包含了消息号,消息的类型,字参数和长字参数等信息.结构定义如下: typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; 第一个成员变量hwnd表示消息所属的窗口.在Windows程序中,用HWND类型的变量来标识窗口. 第二个成员变量message指定

10.swoole学习笔记--进程队列通信

<?php //进程仓库 $workers=[]; //最大进程数 $worker_num=2; //批量创建进程 for($i=0;$i<$worker_num;$i++){ //创建子进程 $process=new swoole_process("doProcess",false,false); //开启队列--类似于全局函数 $process->useQueue(); //启动进程并获取进程id $pid=$process->start(); //存入进程

非阻塞队列 普通队列 阻塞队列 学习笔记

参考 http://www.cnblogs.com/dolphin0520/p/3932906.html package blockthread; import java.util.ArrayList; import java.util.List; import java.util.PriorityQueue; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.LinkedBlockingQue

C语言学习笔记-顺序表

#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include "conio.h" #define ERROR 0 #define OK 1 #define MAXSIZE 10 typedef int ElemType; typedef struct{ ElemType elem [MAXSIZE]; int last; }SeqList; /*打印顺序表*/ void