C#数据结构-队列
隊(duì)列是一種特殊線(xiàn)性的數(shù)據(jù)結(jié)構(gòu),也是一種運(yùn)算受限制的線(xiàn)性表,跟棧恰好相反運(yùn)算規(guī)則先進(jìn)先出。插入元素叫做入隊(duì)或者進(jìn)隊(duì),插入的一方叫做隊(duì)尾;刪除元素叫做出隊(duì),刪除的一端叫做隊(duì)首。
順序表隊(duì)列
class SqQueueClass{const int Maxsize = 10;public string[] data;//隊(duì)首和隊(duì)尾public int front, rear;public SqQueueClass(){data = new string[Maxsize];//非循環(huán)隊(duì)列front = -1;rear = -1;}//非循環(huán)隊(duì)列#region 判斷隊(duì)列是否為空public bool QueueEmpty(){return front == rear;}#endregion#region 進(jìn)隊(duì)public bool enQueue(string value){//滿(mǎn)隊(duì)if (rear==Maxsize-1){return false;}rear++;data[rear] = value;return true;}#endregion#region 出隊(duì)public bool deQueue(ref string value){//隊(duì)空if (front==rear){return false;}front++;value = data[front];return true;}#endregion}
循環(huán)隊(duì)列
class SqQueueClass{const int Maxsize = 10;public string[] data;//隊(duì)首和隊(duì)尾public int front, rear;public SqQueueClass(){data = new string[Maxsize];//循環(huán)隊(duì)列front = 0;rear = 0;}//循環(huán)隊(duì)列#region 判斷隊(duì)列是否為空public bool QueueEmpty(){return front == rear;}#endregion#region 進(jìn)隊(duì)public bool enQueue(string value){//隊(duì)滿(mǎn)if ((rear+1)%Maxsize==front){return false;}rear = (rear + 1) % Maxsize;data[rear] = value;return true;}#endregion#region 出隊(duì)public bool deQueue(ref string value){if (front==rear){return false;}front = (front + 1) % Maxsize;value = data[front];return true;}#endregion} 鏈表隊(duì)列
/// <summary>/// 鏈隊(duì)數(shù)據(jù)存儲(chǔ)/// </summary>class LinkData{public string data;public LinkData next;}/// <summary>/// 鏈隊(duì)節(jié)點(diǎn)存儲(chǔ)/// </summary>class LinkQueue{public LinkData front;public LinkData rear;}/// <summary>/// 鏈隊(duì)操作/// </summary>class LinkQueueClass{LinkQueue queues = new LinkQueue();public LinkQueueClass(){//初始化queues.front = null;queues.rear = null;}#region 判斷隊(duì)列是否為空public bool QueueEmpty(){return queues.front == queues.rear;}#endregion#region 進(jìn)隊(duì)public void enQueue(string value){LinkData datas = new LinkData();datas.data = value;datas.next = null;//隊(duì)空if (queues.rear==null){queues.front = datas;queues.rear = datas;}else{queues.rear.next = datas;queues.rear = datas;}}#endregion#region 出隊(duì)public bool deQueue(ref string value){LinkData datas;//隊(duì)空if (queues.rear==null){return false;}datas = queues.front;if (queues.front==queues.rear){//一個(gè)節(jié)點(diǎn)的時(shí)候queues.front = null;queues.rear = null;}else{queues.front = queues.front.next;}value = datas.data;//釋放空間datas = null;return true;}#endregion}
class SqQueueClass{const int Maxsize = 10;public string[] data;//隊(duì)首和隊(duì)尾public int front, rear;public SqQueueClass(){data = new string[Maxsize];//循環(huán)隊(duì)列front = 0;rear = 0;}//循環(huán)隊(duì)列#region 判斷隊(duì)列是否為空public bool QueueEmpty(){return front == rear;}#endregion#region 進(jìn)隊(duì)public bool enQueue(string value){//隊(duì)滿(mǎn)if ((rear+1)%Maxsize==front){return false;}rear = (rear + 1) % Maxsize;data[rear] = value;return true;}#endregion#region 出隊(duì)public bool deQueue(ref string value){if (front==rear){return false;}front = (front + 1) % Maxsize;value = data[front];return true;}#endregion} 鏈表隊(duì)列
/// <summary>/// 鏈隊(duì)數(shù)據(jù)存儲(chǔ)/// </summary>class LinkData{public string data;public LinkData next;}/// <summary>/// 鏈隊(duì)節(jié)點(diǎn)存儲(chǔ)/// </summary>class LinkQueue{public LinkData front;public LinkData rear;}/// <summary>/// 鏈隊(duì)操作/// </summary>class LinkQueueClass{LinkQueue queues = new LinkQueue();public LinkQueueClass(){//初始化queues.front = null;queues.rear = null;}#region 判斷隊(duì)列是否為空public bool QueueEmpty(){return queues.front == queues.rear;}#endregion#region 進(jìn)隊(duì)public void enQueue(string value){LinkData datas = new LinkData();datas.data = value;datas.next = null;//隊(duì)空if (queues.rear==null){queues.front = datas;queues.rear = datas;}else{queues.rear.next = datas;queues.rear = datas;}}#endregion#region 出隊(duì)public bool deQueue(ref string value){LinkData datas;//隊(duì)空if (queues.rear==null){return false;}datas = queues.front;if (queues.front==queues.rear){//一個(gè)節(jié)點(diǎn)的時(shí)候queues.front = null;queues.rear = null;}else{queues.front = queues.front.next;}value = datas.data;//釋放空間datas = null;return true;}#endregion}
總結(jié)
- 上一篇: 手机端召唤Debug
- 下一篇: 《JavaScript高级程序设计(第四