• C#数据结构之循环链表


    public class Node
        {
            public object Element;
            public Node Link;
    
            public Node()
            {
                Element = null;
                Link = null;
            }
    
            public Node(object theElement)
            {
                Element = theElement;
                Link = null;
            }
        }
    public class LinkedList
        {
            //头结点
            protected Node Header;
    
            private int count;
    
            public LinkedList()
            {
                count = 0;
                Header = new Node("header");
                Header.Link = Header;
            }
    
            public bool IsEmpty()
            {
                return (Header.Link == null);
            }
    
            public void MakeEmpty()
            {
                Header.Link = null;
            }
    
            public void PrintList()
            {
                Node current = new Node();
                current = Header;
                while (current.Link.Element.ToString() != "header")
                {
                    Console.WriteLine(current.Link.Element);
                    current = current.Link;
                }
            }
    
            private Node FindPrevious(object n)
            {
                Node current = Header;
                while (!(current.Link == null) && current.Link.Element != n)
                {
                    current = current.Link;
                }
                return current;
            }
    
            private Node Find(object item)
            {
                Node current = new Node();
                current = Header.Link;
                while (current.Element != item)
                {
                    current = current.Link;
                }
                return current;
            }
    
            public void Insert(object newItem, object after)
            {
                Node current = new Node();
                Node newNode = new Node(newItem);
                current = Find(after);
                newNode.Link = current.Link;
                current.Link = newNode;
                count++;
            }
    
            public void Remove(object n)
            {
                Node p = FindPrevious(n);
                if (!(p.Link == null))
                {
                    p.Link = p.Link.Link;
                    count--;
                }
            }
    
            public void InsertFirst(object n)
            {
                Node current = new Node(n);
                current.Link = Header;
                Header.Link = current;
                count++;
            }
    
            public Node Move(int n)
            {
                Node current = Header.Link;
                Node tmp;
                for (int i = 0; i <= n; i++)
                {
                    current = current.Link;
                }
                if (current.Element.ToString() == "header")
                {
                    current = current.Link;
                }
                tmp = current;
                return tmp;
            }
    
            public Node GetFirst()
            {
                return Header;
            }
        }
  • 相关阅读:
    4-6 R语言函数 排序
    微信公众平台开发接口之天气预报字符串截取
    微信公众平台开发接口之百度翻译
    手机模板 好
    模板1
    手机模板2
    手机模板1
    淘宝素材装修
    如何批量删除SQL注释?
    (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】
  • 原文地址:https://www.cnblogs.com/pengdotnet/p/2971219.html
Copyright © 2020-2023  润新知