链栈以及链队列的实现

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

  class QueueLink<T> //链队列
    {
        public int count;
        public Node<T> front;//头节点
        public Node<T> rear;//尾节点      
        public QueueLink() {
            front = null;
            rear = null;
            count = 0;
        }
        public void Enqueue(T value) {//入队
            Node<T> newNode = new Node<T>(value);
            if (count == 0) {
                front = newNode;
                rear =newNode;  
                count=1;
            }
            else
            {
                rear.Next = newNode;
                rear = newNode;
                count++;
            }
        }
        public T Dequeqe() { //出队
            Node<T> 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<T>
    {
        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<T> head;
        public Node<T> 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<T> node) {
            head = node;
        }
        public StackLink(Node<T> node, T value) {
            data = value;
            head = node;
        }   
         public T Peek() {//返回栈顶元素的值
            if (head!= null)
            {
                Node<T> temp = head;
                for (int i = 1; i <count; i++)
                {
                    temp = temp.Next; //遍历到前一个元素
                }
                return temp.Value;
            }
            else {
                return default(T);
            }
        }

        public void Push(T value)//添加元素
        {
            Node<T> newNode =new Node<T>(value);
            if (count == 0)
            {
                head = newNode;
                count++;
            }
            else { 
                Node<T> 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<T> temp = head;
                    head = null;
                    count--;
                    return temp.Value;
                }
                else
                {
                    Node<T> 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<T>
    {
        private T value;
        public T Value{ //属性
            get { return value; }
            set { this.value = value; }
        }
        private Node<T> next;
        public Node<T> Next {//节点引用
            get { return next; }
            set { next = value; }
        }
        //以下为该类的构造方法
        public Node(T value) {
            this.value = value;
            next = null;
        }
        public Node(T value, Node<T> node) {
            next = node;
            this.value = value;
        }
        public Node() {
            value = default(T);
            next = null;
        }
        public Node(Node<T> node) {
            value = default(T);
            next = node;
        }
    }

“`

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值