链栈以及链队列的实现

链队列的实现:只有入队以及出队

  class QueueLink //链队列
    {
        public int count;
        public Node front;//头节点
        public Node rear;//尾节点      
        public QueueLink() {
            front = null;
            rear = null;
            count = 0;
        }
        public void Enqueue(T value) {//入队
            Node newNode = new Node(value);
            if (count == 0) {
                front = newNode;
                rear =newNode;  
                count=1;
            }
            else
            {
                rear.Next = newNode;
                rear = newNode;
                count++;
            }
        }
        public T Dequeqe() { //出队
            Node temp = front;
            if (count == 0)
            {
                return default(T);
            }
            else if (count == 1)
            {
                front = null;
                rear = null;
                count = 0;
            }
            else {
                front = front.Next;
                count--;
            }
            return temp.Value;
        }
        //获取头节点的值
        public T Peek(){
            if(front!=null){
                return front.Value;
            }else{
                return default(T);
        }
//链栈的实现
  class StackLink
    {
        private int count;
        public int Count {
            get { return count; }
            set { count = value; }
        }
        private T data;
        public T Data {
            get { return data; }
            set { data = value; }
        }
        private Node head;
        public Node Head {
            get { return head; }
            set { head = value; }
        }
        public StackLink(){
            data = default(T);
            head = null;
            count = 0;
        }
        public StackLink(T value) {
            data = value;
        }
        public StackLink(Node node) {
            head = node;
        }
        public StackLink(Node node, T value) {
            data = value;
            head = node;
        }   
         public T Peek() {//返回栈顶元素的值
            if (head!= null)
            {
                Node temp = head;
                for (int i = 1; i //遍历到前一个元素
                }
                return temp.Value;
            }
            else {
                return default(T);
            }
        }

        public void Push(T value)//添加元素
        {
            Node newNode =new Node(value);
            if (count == 0)
            {
                head = newNode;
                count++;
            }
            else { 
                Node temp =head;
                for (int i = 1; i < count; i++) {
                    temp = temp.Next; //遍历到前一个元素
                }
                temp.Next = newNode;
                count++;
            }
            }   

        public T Pop() {//移除栈顶的元素并返回栈顶元素
            if (count == 0)
            {
                return default(T);
            }
            else
            {
                if (count == 1)
                {
                    Node temp = head;
                    head = null;
                    count--;
                    return temp.Value;
                }
                else
                {
                    Node temp = head;
                    for (int i = 1; i < count-1; i++)
                    {
                        temp = temp.Next; //遍历到前一个元素
                    }
                    T value=temp.Next.Value;
                    temp.Next = null;
                    count--;
                    return value;
                }
            }
        }
        }

//自己设计的Node类

 class Node
    {
        private T value;
        public T Value{ //属性
            get { return value; }
            set { this.value = value; }
        }
        private Node next;
        public Node Next {//节点引用
            get { return next; }
            set { next = value; }
        }
        //以下为该类的构造方法
        public Node(T value) {
            this.value = value;
            next = null;
        }
        public Node(T value, Node node) {
            next = node;
            this.value = value;
        }
        public Node() {
            value = default(T);
            next = null;
        }
        public Node(Node node) {
            value = default(T);
            next = node;
        }
    }

“`

你可能感兴趣的:(C#)