- 浏览: 1489868 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 6747id3 和 c4.5代码公共 ... -
AI 决策树ID3 代码(c++)
2009-12-29 09:06 2901http://blog.csdn.net/cctt_1/arc ... -
Const用法小结
2009-12-14 20:01 1221关于C++中的const关键字的用法非常灵活,而使用const ... -
虚函数:从零开始(转)
2009-12-14 20:01 958虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做 ... -
学用VC++进行Winsock编程
2009-12-14 19:59 1778学用VC++进行Winsock编程 说到Winsock, ... -
用标准C++进行string与各种内置类型数据之间的转换
2009-12-13 19:39 4053要实现这个目标,非stringstream类莫属。这个类在&l ... -
回复 C++中如何将Int类型转换为String类型?
2009-12-13 19:32 8224像是C#,java等高级语言中,int转String类型都是很 ... -
请问标准C++里如何将一个int转换为string?除了itoa还有别的方法吗?
2009-12-13 19:31 5949我从文件中读取的数据为string型,要实现到数据型的转化,C ... -
有关c++ string类
2009-12-13 18:57 1398之所以抛弃char*的字符 ... -
string char*之类的相互转换
2009-12-13 18:55 33131 CString,int,string,char*之间的转换 ... -
STL和C++标准函数库(vector用法)
2009-12-13 14:38 8256#include <iostream> #inc ... -
Vector用法(C++ Primer中文版)
2009-12-13 14:34 4331Vector用法(C++ Primer中 ... -
cin如何结束
2009-12-12 21:13 2898输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字 ... -
cin, cin.get(),cin.getline()
2009-12-12 21:08 4131cin读入数据遇到空格结束;并且丢弃空格符,输入遇到回车符 ... -
c/c++ 获取时间
2009-12-12 19:44 2086//方案— 优点:仅使用C标准库;缺点:只能精确到秒级 #i ... -
C语言优先级列表
2009-11-30 12:40 4910醋 -初等,4个: ( ) [ ] -> 指向结构体成 ... -
C/C++语言void及void指针深层探索
2009-11-29 20:28 11931.概述 许多初学者对C/C++语言中的void及 ...
相关推荐
数据结构 严蔚敏 C语言版 循环队列 很给劲哦 绝对不会令您失望的。
c语言实现的循环队列,附代码,标准实验报告
包含了C语言实现循环队列的代码, 有循环队列的彩图讲解, 便于理解代码.
自己写的过了验收的 类C的数据结构 用了循环队列 主要是移动队列头指针
C语言实现循环对列,思路清晰。编译环境VC 2008下可编译通过。
C语言实现循环队列
这是一个循环队列的c语言实现程序,实现入队、出队等操作
利用485的数据传输,制作出一个循环队列,制作协议解析循环队列中数据
代码有详解 易懂 功能实现较全 代码有详解 易懂 功能实现较全 代码有详解 易懂 功能实现较全
数据结构循环队列的C语言实现
基本的进队列、出队列、显示队列元素、去队首元素.......
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 # 优点 循环队列的一个好处是我们可以利用这个...
队列在日常开发中有时还是会用到的,比如实现一个消息队列时底层就需要一个队列、又或者实现图的广度遍历也...c语言标准库是没有队列这种结构提供的,这里提供一个种队列的实现方法,在c语言的环境下能够方便的使用。
C语言实现循环队列的基本运算,建立、入队、出队,简单易懂。
用C语言写的一个简单的循环队列,数据结构实验。
本程序使用数据结构循环队列的方法判断括号是否匹配!
队列源码,文章《也没想象中那么神秘的数据结构-先来后到的“队列”》系列示例代码
循环队列的c语言操作.pdf
数据结构(C语言版)——循环顺序队列(代码版)里面包含C文件和exe文件。基本操作为:1:初始化循环顺序队列2:销毁循环顺序队列3:清空循环顺序队列4:循环顺序队列是否为空5:返回循环顺序队列头元素6:元素入队7:元素出队8:...
数据结构用C语言实现队列的算法,有链队列出队、入队算法,循环队列出队、入队算法。