迎接2012之集合和泛型(5)------队列的顺序结构基本实现
来源:互联网 发布:行业数据研究中心 编辑:程序博客网 时间:2024/06/05 19:14
一、非泛型实现
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Data;using System.Data.SqlClient;using System.Text.RegularExpressions;using System.Reflection;namespace ConsoleApplication{ class Program { static void Main(string[] args) { Queue s = new Queue(3); s.EnQueue(3); s.EnQueue(4); s.EnQueue(5); Console.WriteLine(s.Peek()); Console.WriteLine(s.DeQueue()); } } /// <summary> /// 队列的顺序结构基本实现(非泛型) /// </summary> public class Queue { /// <summary> /// 存放元素的数组 /// </summary> public object[] array; /// <summary> /// 元素的上标 /// </summary> public int first; /// <summary> /// 元素的下标 /// </summary> public int tail; /// <summary> /// 默认的构造函数 /// </summary> public Queue() { this.array = new object[10]; this.first = 0; this.tail = 0; } /// <summary> /// 构造函数重载 /// </summary> /// <param name="capcity"></param> public Queue(int count) { this.array = new object[count]; this.first = 0; this.tail = 0; } /// <summary> /// 元素个数 /// </summary> public int count { get { return (tail - first + array.Length) % array.Length; } } /// <summary> /// 扩大容器 /// </summary> private void Dilatation() { //将数组个数扩大为原来的两倍 object[] newarray = new object[this.array.Length * 2]; for (int i = 0; i < this.array.Length; i++) { newarray[i] = this.array[i]; } this.array = newarray; } /// <summary> /// 入队 /// </summary> /// <param name="obj"></param> public void EnQueue(object obj) { //判断是否为满,满的话扩容,最后就是添加元素 if ((tail + 1) % array.Length == first) { Dilatation(); } tail = (tail + 1) % array.Length; array[tail] = obj; } /// <summary> /// 出队 /// </summary> public object DeQueue() { if (first != tail) { first = (first + 1) % array.Length; return array[first]; } else { return ""; } } /// <summary> /// 查找元素是否存在 /// </summary> /// <param name="obj"></param> /// <returns></returns> public bool Contains(object obj) { bool b = false; for (int i = 0; i < this.array.Length; i++) { if (this.array[i].Equals(obj)) { b = true; break; } } return b; } /// <summary> /// 取队首 /// </summary> public object Peek() { if (first != tail) { return array[(first + 1) % array.Length]; } else { return ""; } } }}
二、泛型实现
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Data;using System.Data.SqlClient;using System.Text.RegularExpressions;using System.Reflection;namespace ConsoleApplication{ class Program { static void Main(string[] args) { Queue<int> s = new Queue<int>(3); s.EnQueue(3); s.EnQueue(4); s.EnQueue(5); Console.WriteLine(s.Peek()); Console.WriteLine(s.DeQueue()); } } /// <summary> /// 队列的顺序结构基本实现(泛型) /// </summary> public class Queue<T> { /// <summary> /// 存放元素的数组 /// </summary> public T[] array; /// <summary> /// 元素的上标 /// </summary> public int first; /// <summary> /// 元素的下标 /// </summary> public int tail; /// <summary> /// 默认的构造函数 /// </summary> public Queue() { this.array = new T[10]; this.first = 0; this.tail = 0; } /// <summary> /// 构造函数重载 /// </summary> /// <param name="capcity"></param> public Queue(int count) { this.array = new T[count]; this.first = 0; this.tail = 0; } /// <summary> /// 元素个数 /// </summary> public int count { get { return (tail - first + array.Length) % array.Length; } } /// <summary> /// 扩大容器 /// </summary> private void Dilatation() { //将数组个数扩大为原来的两倍 T[] newarray = new T[this.array.Length * 2]; for (int i = 0; i < this.array.Length; i++) { newarray[i] = this.array[i]; } this.array = newarray; } /// <summary> /// 入队 /// </summary> /// <param name="obj"></param> public void EnQueue(T obj) { //判断是否为满,满的话扩容,最后就是添加元素 if ((tail + 1) % array.Length == first) { Dilatation(); } tail = (tail + 1) % array.Length; array[tail] = obj; } /// <summary> /// 出队 /// </summary> public T DeQueue() { if (first == tail) { Console.WriteLine("不存在"); } first = (first + 1) % array.Length; return array[first]; } /// <summary> /// 查找元素是否存在 /// </summary> /// <param name="obj"></param> /// <returns></returns> public bool Contains(T obj) { bool b = false; for (int i = 0; i < this.array.Length; i++) { if (this.array[i].Equals(obj)) { b = true; break; } } return b; } /// <summary> /// 取队首 /// </summary> public T Peek() { if (first == tail) { Console.WriteLine("不存在"); } return array[(first + 1) % array.Length]; } }}
- 迎接2012之集合和泛型(5)------队列的顺序结构基本实现
- 迎接2012之集合和泛型(1)------线性表的顺序结构基本实现
- 迎接2012之集合和泛型(3)------栈的顺序结构基本实现
- 迎接2012之集合和泛型(6)------队列的链式结构基本实现
- 迎接2012之集合和泛型(2)------线性表的链式结构基本实现
- 迎接2012之集合和泛型(4)------栈的链式结构基本实现
- 队列的顺序存储结构及其基本运算的实现
- 队列的顺序存储结构及其基本运算的实现
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 队列的顺序结构实现
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 数据结构8:队列的顺序存储结构表示和实现
- JAVA实现队列的顺序存储结构和操作
- 《数据结构和算法》之队列的顺序存储结构
- 集合顺序存储结构的实现和操作
- ssh-keygen & ssh-copy-id实现两去台linux机器之间无密码通讯
- 18.VC(ui)-SelectClipRgn
- Android开发进阶(一)XML文件解析之SAX模式解析
- mysqlbinlog 查看mysql bin 日志
- SWT的PaintListener
- 迎接2012之集合和泛型(5)------队列的顺序结构基本实现
- Perfect World
- Connection15::Open分析
- 用GDI+制作不规则窗体
- 谷歌API(Ajax)
- 动态申请指针数组
- 4--java "throws" is different from "throw"
- AutoCompleteTextView数据库读取
- 1110日报