- 浏览: 1524997 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
循环队列(C语言版)
作者:刘勉刚 E-mail:liumgj@163.com
线性结构的主要操作就是插入和删除,我
们前面讲过的顺序线性表、单链表、双链表都没有限制插入和删除操作的位置。如果我们限定插入和删除操作在线性表的同一端进行那么这种结构就是栈;如果限定
插入在一端而删除在另一端,这种结构就是对列;栈的特点是先进后出(FILO)而对列是先进先出(FIFO)。进行插入的一端叫队尾,删除的一端叫队头。
队列的实现可以用顺序线性表也可以用链表。在实际使用中有一种更常用的队列叫循环队列。循环队列是把队列的头和尾在逻辑上连接起来,构成一个环。循环队列
中首尾相连,分不清头和尾,此时需要两个指示器分别指向头部和尾部。插入就在尾部指示器的指示位置处插入,删除就在头部指示器的指示位置删除。
循环队列在插入时也要判断其是否已满,删除时要判断其是否已空。为空的条件比较简单当头部指示器和尾部指示器指向同一个位置时表示循环队列为空;因为尾部
指示器指示的是最后一个元素的下一个位置,所以循环队列已满时头部指示器和尾部指示器也指向同一个位置,为了区分这两种状况有两种方法,一种增加一个标识
变量来区分,另一种损失循环队列中的一个元素,即头和尾之间的位置不用,此时循环队列为满的条件变成头部指示器加1等于尾部指示器;为空的条件成为头部指
示器和尾部指示器指向同一位置。
循环队列的首尾相连是通过取余操作来实现的,把头和尾的位置都除以队列最大长度然后取余。当到达尾部及最后一个位置时再加1就成了队列的长度刚好可以整除余0即又回到了队头。
循环队列的主要操作:
(1)创建循环队列
(2)初始化循环队列
(3)判断循环队列是否为空
(4)判断循环队列是否为满
(5)入队
(6)出队
Microsoft Visual Studio .NET 2003下的程序:
#include<stdio.h> #define MAXSIZE 100 typedef struct { int elem[MAXSIZE]; int front,rear; }Quque; //定义队头 int initQue(Quque **q) //初始化 { (*q)->front=0; (*q)->rear=0; } int isFull(Quque *q) { if(q->front==(q->rear+1)%MAXSIZE) //判满 刘勉刚 return 1; else return 0; } int insertQue(Quque **q,int elem) { if(isFull(*q)) return -1; (*q)->elem[(*q)->rear]=elem; (*q)->rear=((*q)->rear+1)%MAXSIZE; //插入 return 0; } int isEmpty(Quque *q) { if(q->front==q->rear) //判空 return 1; else return 0; } int deleteQue(Quque ** q,int *pelem) { if(isEmpty(*q)) return 0; *pelem=(*q)->elem[(*q)->front]; (*q)->front =((*q)->front +1)%MAXSIZE; return 0; } int main(void) { int i=0,elem; Quque *q=(Quque *)malloc(sizeof(Quque)); initQue(&q); for(;i<10;i++) { insertQue(&q,i); } for(i=0;i<10;i++) { deleteQue(&q,&elem); printf("%d\n",elem); } system("pause"); return 0; }
以上是课堂演示代码,整理出来与大家共享,作者:刘勉刚。
发表评论
-
决策树算法
2009-12-29 09:08 6774id3 和 c4.5代码公共 ... -
AI 决策树ID3 代码(c++)
2009-12-29 09:06 2938http://blog.csdn.net/cctt_1/arc ... -
Const用法小结
2009-12-14 20:01 1245关于C++中的const关键字的用法非常灵活,而使用const ... -
虚函数:从零开始(转)
2009-12-14 20:01 988虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做 ... -
学用VC++进行Winsock编程
2009-12-14 19:59 1818学用VC++进行Winsock编程 说到Winsock, ... -
用标准C++进行string与各种内置类型数据之间的转换
2009-12-13 19:39 4117要实现这个目标,非stringstream类莫属。这个类在&l ... -
回复 C++中如何将Int类型转换为String类型?
2009-12-13 19:32 8265像是C#,java等高级语言中,int转String类型都是很 ... -
请问标准C++里如何将一个int转换为string?除了itoa还有别的方法吗?
2009-12-13 19:31 5982我从文件中读取的数据为string型,要实现到数据型的转化,C ... -
有关c++ string类
2009-12-13 18:57 1434之所以抛弃char*的字符 ... -
string char*之类的相互转换
2009-12-13 18:55 33391 CString,int,string,char*之间的转换 ... -
STL和C++标准函数库(vector用法)
2009-12-13 14:38 8284#include <iostream> #inc ... -
Vector用法(C++ Primer中文版)
2009-12-13 14:34 4375Vector用法(C++ Primer中 ... -
cin如何结束
2009-12-12 21:13 2967输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字 ... -
cin, cin.get(),cin.getline()
2009-12-12 21:08 4169cin读入数据遇到空格结束;并且丢弃空格符,输入遇到回车符 ... -
c/c++ 获取时间
2009-12-12 19:44 2122//方案— 优点:仅使用C标准库;缺点:只能精确到秒级 #i ... -
C语言优先级列表
2009-11-30 12:40 4944醋 -初等,4个: ( ) [ ] -> 指向结构体成 ... -
C/C++语言void及void指针深层探索
2009-11-29 20:28 12261.概述 许多初学者对C/C++语言中的void及 ...
相关推荐
数据结构是计算机科学中的核心课程之一,它研究如何在计算机中高效地组织和管理数据,...严蔚敏教授的《数据结构》C语言版对循环队列的阐述深入且实用,无论对于初学者还是有经验的开发者,都是一份宝贵的参考资料。
包含了C语言实现循环队列的代码, 有循环队列的彩图讲解, 便于理解代码.
自己写的过了验收的 类C的数据结构 用了循环队列 主要是移动队列头指针
C语言实现循环对列,思路清晰。编译环境VC 2008下可编译通过。
在C语言中实现循环队列,我们需要考虑以下几个关键知识点: 1. **数据存储结构**:通常,循环队列使用数组作为底层数据结构。数组的最后一个元素之后就是数组的第一个元素,形成一个循环。 2. **队头和队尾指针**...
### 数据结构C语言版_循环队列 #### 知识点概述 本篇文章将围绕“循环队列”这一数据结构进行详细的介绍与分析。在计算机科学领域,队列是一种非常重要的线性数据结构,它遵循先进先出(FIFO)的原则。而循环队列...
本文将详细讨论在C语言中实现的几种队列类型,包括顺序队列、链式队列以及循环队列,并结合提供的源代码进行解析。 顺序队列是基于数组实现的数据结构,它的特点是操作主要集中在数组的两端:一端称为队头,用于出...
结合上述知识点,这个“标准版串口循环队列”项目很可能是实现了一个高效的数据收发解决方案,它利用循环队列来存储485通信接收到的数据,并且可能包含了自定义的协议解析功能,以处理这些数据。在实际应用中,这样...
C语言实现循环队列
总结来说,"简单的C语言循环队列"是一个基础的数据结构实验,它帮助我们理解如何在C语言环境中实现和操作循环队列,同时也为我们提供了在实际编程中处理数据流和队列操作的基础。通过这个实验,可以提升对数据结构和...
代码有详解 易懂 功能实现较全 代码有详解 易懂 功能实现较全 代码有详解 易懂 功能实现较全
在C语言中实现循环队列,我们需要定义一个数组来存储元素,同时维护两个指针——front(队首)和rear(队尾)。front指向队列中的第一个元素,而rear指向下一个要加入元素的位置。当rear追上front时,队列满了;当...
本文将深入探讨如何使用C语言和数据结构中的循环队列来实现括号匹配的算法。 首先,我们需要了解什么是循环队列。循环队列是一种线性数据结构,它利用数组的“首尾相接”特性,模拟一个无限的队列。当队列的末尾被...
总结来说,这个压缩包提供了一个学习C语言实现链队列和循环队列的宝贵资源,对想要提升C语言编程技能,尤其是数据结构和算法理解的开发者来说非常有价值。通过实践这些示例,可以更好地掌握队列这一基本数据结构及其...
博文《一种简单易用的通用循环队列的C语言解决方案》实现的代码。 在实际的嵌入式编程中,消息队列的使用还是比较频繁的,已经在文章《一种简单安全的消息队列的C语言解决方案》中说明了一种队列的解决方案,但是...
数据结构循环队列的C语言实现
在Keil for ARM 5.10开发环境中,开发者可以利用C语言编写串口接收中断服务程序,当串口接收到数据时,中断会被触发,此时在中断处理函数中,将接收到的数据插入到循环队列中。同时,需要在主循环或其他合适的地方...
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 # 优点 循环队列的一个好处是我们可以利用这个...
队列在日常开发中有时还是会用到的,比如实现一个消息队列时底层就需要一个队列、又或者实现图的广度遍历也...c语言标准库是没有队列这种结构提供的,这里提供一个种队列的实现方法,在c语言的环境下能够方便的使用。