感觉 Unity3D c# List 不好用简单重写了双向链表

感觉 Unity3D c# List 不好用简单重写了双向链表


直接看代码 不喜欢说话 任性

	
using System.Drawing;
using System.Runtime.ConstrainedExecution;
using Unity.VisualScripting;

namespace Mmorpg
{
    internal class CxxList<T>
    {
        public class Data
        {
            public T data;
            public Data prev;
            public Data next;

            public Data()
            {
                prev = null;
                next = null;
            }
        }

        private Data begin;
        private Data end;
        private int count;

        public CxxList()
        {
            count = 0;
            begin = null;
            end = null;
        }

        public Data Begin()
        {
            return begin;
        }

        public int Size()
        {
            return count;
        }

        public T Back()
        {
            if (end == null)
            {
                return default;
            }
            T data = end.data;
            return data;
        }
        public T Front()
        {
            if (begin == null)
            {
                return default;
            }
            T data = begin.data;
            return data;
        }
        public T PopBack()
        {
            if (end == null)
            {
                return default;
            }
            T data = end.data;
            Data endPrev = end.prev;
            if (endPrev != null)
            {
                endPrev.next = null;
                end.data = endPrev.data;

                Data endPrevPrev = endPrev.prev;
                if (endPrevPrev != null)
                {
                    endPrevPrev.next = end;
                    end.prev = endPrevPrev;
                }
            }
            else
            {
                begin = null;
                end = null;
            }

            --count;
            return data;
        }
        public T PopFront()
        {
            if (begin == null)
            {
                return default;
            }
            T data = begin.data;
            Data beginNext = begin.next;
            if (beginNext != null)
            {
                beginNext.prev = null;
                begin.data = beginNext.data;

                Data beginNextNext = beginNext.next;
                if (beginNextNext != null)
                {
                    beginNextNext.prev = begin;
                    begin.next = beginNextNext;
                }
            }
            else
            {
                begin = null;
                end = null;
            }

            --count;
            return data;
        }

        public void PushBack(T data)
        {
            Data node = new()
            {
                prev = null,
                data = data,
                next = null
            };
            if (begin == null && end == null)
            {
                begin = node;
                end = node;
            }
            else
            {
                end.next = node;
                node.next = null;
                node.prev = end;

                end = node;
            }
            ++count;
        }
        public void PushFront(T data)
        {
            Data node = new()
            {
                prev = null,
                data = data,
                next = null,
            };
            if (begin == null && end == null)
            {
                begin = node;
                end = node;
            }
            else
            {
                node.next = begin;
                node.prev = null;
                begin.prev = node;
                begin = node;
            }
            ++count;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值