队列的实现——C语言_#define queuedatalen(x) s_queuedatalen((unsigned c-程序员宅基地

技术标签: C语言  c语言  队列  数据结构  

// C语言,队列的实现

#include<stdio.h>
#include<stdlib.h>

#define QUEUE_SIZE 	(50)	// 设置队列的大小

typedef struct SeqQueue{
	int data[QUEUE_SIZE];	// 队列元素
	int front;		// 队列的头
	int rear;		// 队列的尾
	int count;		// 队列当前的元素个数
}Queue;

Queue *InitQueue(){					// 队列初始化
	Queue *q = (Queue*)malloc(sizeof(Queue));
	if(q == NULL){
		printf("malloc failed!\n");
		exit(-1); 
	}
	q->front = 0;
	q->rear = 0;
	q->count = 0;
	return q; 
}

int IsFull(Queue* q){				
	return (q->count == QUEUE_SIZE);
}

int IsEmpty(Queue* q){
	return (q->count == 0);
}

void Enqueue(Queue* q, int n){				// 队列添加元素,只能追加在末尾
	if(IsFull(q)){						
		printf("Already full, n = %d\n", n);
		return;
	}
	q->data[q->rear] = n;				// 将元素加入队列
	q->rear = (q->rear+1) % QUEUE_SIZE;		// 注意这里用求余操作代替了数据的移动。
	q->count++;					
}

int Dequeue(Queue* q){					// 队列删除元素,只能从头删除		
	if(IsEmpty(q)){
		return 0;
	}
	int tmp = q->data[q->front];			
	q->front = (q->front+1) % QUEUE_SIZE;		// 删除了头后,起始位置也变了
	q->count--;
	return tmp;
}

int main(void){
	Queue* q = InitQueue();
	int i;
	for(i = 0; i < 50; i++){
		Enqueue(q, i);
	}
	
	while(!IsEmpty(q)){
		int data = Dequeue(q);
		printf("%d-->",data);
	}
	free(q);
	return 0;	
} 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_29506411/article/details/106241028

智能推荐

IO流——文件操作流之字符输入流FileReader-程序员宅基地

文章浏览阅读1.9k次。package com.io.ioDemo;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;//字符流读文件public class FileReaderDemo { public static void mai_字符输入流filereader

Linux深入理解_深入理解linux系统-程序员宅基地

文章浏览阅读1.8w次,点赞14次,收藏12次。一、背景: 翻看着差不多去年这时候写的《痴迷Linux(一)—初识篇》不禁感慨时光飞逝,转眼间已一年闪过。。。回想这一年与Linux交往之路,发现与她也仅仅是停留在表面上的!回想原因:自己现在还没到和她深交的阶段(正所谓距离产生美嘛)同时由于一些原因(比如:这次实训、装服务器等)自己也并一直和她有来往。 这次实训是学校为大三计算机专业安排历时三天;主要讲课内容: ①..._深入理解linux系统

【二分】烦恼的高考志愿_烦恼的高考志愿二分法-程序员宅基地

文章浏览阅读455次。烦恼的高考志愿题目计算机竞赛小组的神牛V神终于结束了万恶的高考,然而作为班长的他还不能闲下来,班主任老t给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是v神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。现有m(m≤100000) 所学校,每所学校预计分数线是 ai(ai ≤ 10^6 )。有n(n≤100000..._烦恼的高考志愿二分法

使用HTML制作静态网站 中国传统文化 丝绸之路 (学生网页设计作业源码)_丝绸之路网页设计-程序员宅基地

文章浏览阅读925次。传统春节网页设计、圣诞节节日发展、中秋、端午传统节日习俗庆祝、地区特色,网站模板 、等网站的设计与制作。️ 大学生传统节日网页作业成品采用DIV CSS布局制作,主要内容包括等内容,作品共多个页面,学生HTML静态网页基础水平制作,页面排版干净简洁。网页技术方面应用包括网页背景颜色、字号字体设置、超链接、图文页面、菜单栏、顶部大图等网页基础知识点 一套优质的网页设计应该包含 (具体可根据个人要求而定)网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网..._丝绸之路网页设计

Python_基础_(模块,time,random,os,sys,json,shelve,xml,序列化反序列化)-程序员宅基地

文章浏览阅读98次。一,Import的基本用法import1.执行对应的文件2.引入变量名3.当一个文件被import,索贝import中的代码会被执行一遍,例如当 import cal ##cla中有inport("xxx"),则会输出## Import引用方法# cal.py文件中def add(x,y) return x + y# test.py文件中..._如何查看shelve,os,sys,time版本号

随便推点

《Linux杂记》查看Linux内核版本的命令_uname -a 读的哪的内容-程序员宅基地

文章浏览阅读2.1k次。方法一: 命令: uname -a 作用: 查看系统内核版本号及系统名称。方法二: 命令: cat /proc/version 作用: 查看目录”/proc”下version的信息,也可以得到当前系统的内核版本号及系统名称 补充说明:   /proc文件系统,它不是普通的文件系统,而是系统内核的映像,也就是说,该目录中的文件是存放在系统内存之中的,它以文件系统的方式为访..._uname -a 读的哪的内容

Python 读取大文件(GB) & yield 的使用_dataframe yield 读取 python-程序员宅基地

文章浏览阅读5.2k次,点赞2次,收藏10次。原文地址https://blog.csdn.net/shudaqi2010/article/details/54017766https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/  最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large ..._dataframe yield 读取 python

Windows API SHGetSpecialFolderPath的用法 ,获取特殊文件夹_shgetspecialfolderpath 可否用户xp系统-程序员宅基地

文章浏览阅读3.8k次。BOOL SHGetSpecialFolderPath ( HWND hwndOwner, LPTSTR lpszPath, int nFolder, BOOL fCreate);示例: 获得自启动文件夹的路径 TCHAR filePath[MAX_PATH]; ::SHGetSp_shgetspecialfolderpath 可否用户xp系统

Tomcat 5.5-Manager App HOW-TO(翻译了部份,努力中...)-程序员宅基地

文章浏览阅读59次。偶也是学习,不过,觉得每次都是读英文,麻烦,就希望把它翻译成中文,为自己,也为其它想学习的朋友,呵呵.不过,由于内容比较多,可能翻译的时间要多一点,如果有兴趣合作的朋友,可以回复BLOG,留言您想翻译那一段.让我们一起完成该内容.不过,为了增加文档的可阅读性,把阅读当成一种享受,请在翻译的时候遵守以下几点:1).翻译的字体一律用绿色.保证阅读不那么伤眼睛.2).重点标题用红色标明,重点内容用蓝色标..._invalid context path yy was specified

Android的IPC机制 —— BroadcastReceiver的使用_broadcastreceiver 可以创建单例么-程序员宅基地

文章浏览阅读340次。综述  在Android的四大组件中除了ContentProvider能够用于进程间的通信外,还有一个也能够用于进程间的通信,那就是BroadcastReceiver。BroadcastReceiver翻译成中文为广播接收器,既然作为广播接收器,那么必然就有Broadcast。在Android中,Broadcast..._broadcastreceiver 可以创建单例么

行内块级元素的并排问题_两个section平行排列-程序员宅基地

文章浏览阅读1.7k次。1. 在一个长度为400px的section中,存在两个分别为200px的div, 如何并排存放:如图所示:解答:设置最外层的 盒子 word-spacing: -5px, 两个div盒子 inline-box box-sizing: border-box然后:..._两个section平行排列

推荐文章

热门文章

相关标签