栈,队列,线性表的区别和用途,及用顺序表和链表实现队列

编程入门 行业动态 更新时间:2024-10-21 07:55:10

栈,<a href=https://www.elefans.com/category/jswz/34/1771257.html style=队列,线性表的区别和用途,及用顺序表和链表实现队列"/>

栈,队列,线性表的区别和用途,及用顺序表和链表实现队列

一、栈,队列,线性表的区别

栈相对只有入栈和出栈操作,队列相对也只有入队和出队操作,相对于线性表而言,站和队列是操作受限的线性表。
栈:先进后出。用于调用函数,网页访问等等。
队列:先进先出,后进后出。当需要按顺序处理元素时。

二、用线性表实现队列

 class SeqQueue<T> :IQueueDS<T>{private T[] data;private int count;private int front;   //队首,等于第一个元素索引减一private int rear;    //队尾,等于最后一个元素索引private int capacity; //容量public SeqQueue(int size){data=new T[size];capacity = size ;rear = -1;front = -1;}public SeqQueue():this(10){}public int Count{get { return count; }}/// <summary>/// 入队/// </summary>/// <param name="item"></param>public void Enqueue(T item){if (count < capacity){//如果队尾达到顶端if (rear == capacity-1){rear = 0;}else //如果队尾没有达到顶端{rear++;  //队尾位置更新}data[rear] = item;  //赋值count++;                //元素个数增加}else{Console.WriteLine("已超出界限");}}/// <summary>/// 出队/// </summary>/// <returns></returns>public T Dequeue(){T temp = default(T);if (front == capacity - 1){temp = data[0];   //存储要出队的元素}else{temp = data[front + 1];   //存储要出队的元素}front++;                    //队首位置更新count--;                    //元素个数减一return temp;}/// <summary>/// 取得队首的元素/// </summary>/// <returns></returns>public T Peek(){return data[front + 1];}/// <summary>/// 得到队列的长度/// </summary>/// <returns></returns>public int GetLength(){return count;}/// <summary>/// 清空/// </summary>public void Clear(){rear = -1;front = -1;count = 0;}}
}

三、用链表实现队列

 class LinkQueue<T>:IQueueDS<T>{private Node<T> head;   //头节点private int count;   //元素个数private Node<T> rear; //尾节点public LinkQueue(){head = rear = null;count = 0;}public int Count{get { return count; }}/// <summary>/// 入队/// </summary>/// <param name="item"></param>public void Enqueue(T item){Node<T> node=new Node<T>(item);//头节点为空时if (head == null){head = rear = node;   //更新头节点和尾节点count++;}else{rear.Next = node;   //添加元素rear = node;      //更新尾节点count++;}}/// <summary>/// 出队/// </summary>/// <returns></returns>public T Dequeue(){if (head != null){T temp = head.Data;head = head.Next;    //更新队首位置count--;return temp;}else{Console.WriteLine("队列为空");return default(T);}}/// <summary>/// 取得对手位置的元素/// </summary>/// <returns></returns>public T Peek(){return head.Data;}/// <summary>/// 得到队列长度/// </summary>/// <returns></returns>public int GetLength(){return count;}/// <summary>/// 队列清空/// </summary>public void Clear(){head = rear = null;count = 0;}}
}

最后运行结果

class Program{static void Main(string[] args){//Queue<string> queue=new Queue<string>();//SeqQueue<string> queue=new SeqQueue<string>();LinkQueue<string> queue=new LinkQueue<string>();queue.Enqueue("南方");queue.Enqueue("北方");queue.Enqueue("俄罗斯");queue.Enqueue("欧洲");queue.Enqueue("世界");Console.WriteLine(queue.Count);string str = queue.Dequeue();Console.WriteLine(str);string str_2 = queue.Dequeue();Console.WriteLine(str_2);Console.WriteLine(queue.Count);string str_3 = queue.Peek();Console.WriteLine(str_3);Console.WriteLine(queue.Count);queue.Clear();Console.WriteLine(queue.Count);Console.ReadKey();}}

更多推荐

栈,队列,线性表的区别和用途,及用顺序表和链表实现队列

本文发布于:2023-07-28 18:41:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1277458.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:队列   顺序   用途   链表   区别

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!