0
点赞
收藏
分享

微信扫一扫

链队列


链队列_无法删除


链队列_无法删除_02

interface IQueue<T>
{
int GetLength();
void Clear();
void EnQueue(T elem);
void Dequeue();

T Peek();
bool IsEmepty();

/// <summary>
/// 链队列
/// </summary>
/// <typeparam name="T"></typeparam>
class LinkQueue<T> : IQueue<T>
{
private int count; //元素个数
private Node<T> front;//头指针
private Node<T> rear;//尾指针

链队列_无法删除_03

public LinkQueue()
{
count = 0;
front = rear = new Node<T>(); //初始化指向头结点
}



public void Clear()
{
count = 0;
front.Next = null;
rear = null;
}

链队列_链队列_04

//对头出队
public T Dequeue()
{
//判断是否为空队
//对头指针改变
//count--
if (rear==front)
{
throw new Exception("空队无法删除");
}

Node<T> p = front.Next;
front.Next = p.Next;
count--;
return p.Data;

}

链队列_链队列_05

//队尾入队
public void EnQueue(T elem)
{

Node<T> newNode=new Node<T>(elem);
//把新的节点添加到队尾
//改变尾指针的指向地址
//count++
rear.Next = newNode;
rear = newNode;
count++;

}


public int GetLength()
{
return count;
}

链队列_初始化_06

public bool IsEmepty()
{
return front == rear;
}

链队列_初始化_07

public T Peek()
{
Node<T> p = front.Next;
return p.Data;
}

void IQueue<T>.Dequeue()
{

}
}

class Program
{
static void Main(string[] args)
{
//Queue<int> sum=new Queue<int>(6);
LinkQueue<int> sum=new LinkQueue<int>();
Console.WriteLine(sum.IsEmepty());
Console.WriteLine(sum.GetLength());
sum.EnQueue(100);
sum.EnQueue(200);
sum.EnQueue(300);
sum.EnQueue(400);
Console.WriteLine(sum.Dequeue());
Console.WriteLine(sum.Peek());
Console.WriteLine(sum.IsEmepty());
sum.Clear();
Console.WriteLine(sum.GetLength());

Console.ReadKey();
}
}


举报

相关推荐

0 条评论