黑马程序员_队列的学习
来源:互联网 发布:业余程序员该如何赚钱 编辑:程序博客网 时间:2024/06/05 16:49
/* 队列的学习 * 队列是一种将数据从表的末端放入,并在表的前端移除的数据结构。按照数据进入的顺序来存储。(FIFO First In First Out) * 添加新项被称为Enqueue,而从队列中移除数据项的操作则被称为Dequeue * 查看起始数据 Peek()方法 * 队列默认的容量为32个数据项,同Stack一样 当数据项超过当前的最大容量后,容量会自动的翻倍 * 也可以指定增长的倍数 Queue q=new Queue(32,3);//指定增长默认初始量的3倍 */namespace MyQueue{ class Program { static void Main(string[] args) { Queue qq = new Queue(); pqItem[] pq = new pqItem[3]; pq[0].name = "a"; pq[0].priority = 1; pq[0].name = "b"; pq[0].priority = 0; pq[2].name = "c"; pq[2].priority = 3; for (int i = 0; i <= pq.GetUpperBound(0); i++) { qq.Enqueue(pq[i]);//把数据项放入队列 } pqItem nextPatient; nextPatient = (pqItem)qq.Dequeue();//移除队列 Console.WriteLine(nextPatient.name); Console.ReadKey(); } } /// <summary> /// Queue 的实现 /// </summary> public class CQueue { private ArrayList arrQueue; public CQueue() { arrQueue = new ArrayList(); } /// <summary> /// 进队列 /// </summary> /// <param name="item"></param> public void EnQueue(object item) { arrQueue.Add(item); } /// <summary> /// 出队列 /// </summary> public void DeQueue() { arrQueue.RemoveAt(0);//其实数据 } /// <summary> /// 查看起始数据项 /// </summary> /// <returns></returns> public object Peek() { return arrQueue[0]; } /// <summary> /// 清除队列中的所有数据项 /// </summary> public void Clear() { arrQueue.Clear(); } /// <summary> /// 获取当前队列中的数据项数量 /// </summary> /// <returns></returns> public int Count() { return arrQueue.Count; } } public struct pqItem { public int priority;//数据项的优先级 public string name;//数据项的名称 } /// <summary> /// 定义一个Queue的子类 此处为了实现对DeQueue的重写,以实现根据优先级出队列的功能 /// </summary> public class PQueue : Queue { public PQueue() { } /// <summary> /// 重写出队列的方法 实现根据优先级出队列 /// </summary> /// <returns></returns> public override object Dequeue() { object[] items; int min;//获取优先级最大 数值最小的数据项的数值 items = this.ToArray();//获取当前队列的数据项 min = ((pqItem)items[0]).priority;//获取首个数据项的优先级 并作 for (int i = 1; i <= items.GetUpperBound(0); i++) { if (((pqItem)items[i]).priority < min) { min = ((pqItem)items[i]).priority; } } this.Clear();//从Queue中移除所有的对象 int i2; for (i2 = 0; i2 <= items.GetUpperBound(0); i2++) { if (((pqItem)items[i2]).priority == min && ((pqItem)items[i2]).name != "") { this.Enqueue(items[i2]); } } return base.Dequeue(); } }}
0 0
- 黑马程序员_队列的学习
- 黑马程序员_队列_堆栈
- 黑马程序员_关于String的学习
- 黑马程序员_关于集合的学习
- 黑马程序员_关于io的学习
- 黑马程序员_抽象类的学习
- 黑马程序员_接口的学习
- 黑马程序员_栈的学习总结
- 黑马程序员_类的学习
- 黑马程序员_学习多线程
- 黑马程序员学习_反射
- 黑马程序员_关于object类的学习
- 黑马程序员_关于java异常机制的学习
- 黑马程序员_关于java 包的学习
- 黑马程序员_关于java GUI的学习
- 黑马程序员_关于网络编程的学习
- 黑马程序员_学习笔记6注解的总结
- 黑马程序员_学习笔记三 字符串的常用方法
- 动态规划
- OpenCV进行OCR识别
- 黑马程序员------------------java基础常识
- html,CSS文字大小单位px、em、pt的关系换算
- Windows ICON 详解
- 黑马程序员_队列的学习
- 题目1110:小白鼠排队
- 04-Linux-文件系统基本结构
- Python网络爬虫1 ---- windows下搭建爬虫框架scrapy
- Android 基础学习
- Ubuntu12.04 安装环境总结
- C#生成缩略图(等比例,水平、垂直方向居中,画布白色背景填充)
- Linux下搭建gtk+2.0开发环境
- MD5算法