• 数据结构和算法基础之循环链表


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
    
        /// <summary>
        /// 循环链表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class CircleLinkList<T>
        {
            public Node<T> Head;
            public CircleLinkList()
            {
                Head = null;
            }
            /// <summary>
            /// 增加
            /// </summary>
            /// <param name="data"></param>
            public void Add(T data)
            {
                Node<T> newNode = new Node<T>(data);
                Node<T> tmpNode = new Node<T>();
                if(Head==null)
                {
                    Head = new Node<T>();
                }
                tmpNode = Head;
                while(tmpNode.Next!=null&& tmpNode.Next!= Head)
                {
                    tmpNode = tmpNode.Next;
                }
                tmpNode.Next = newNode;
                newNode.Next = Head;
            }
    
            /// <summary>
            /// 在i位置前面插入节点
            /// </summary>
            /// <param name="data"></param>
            /// <param name="i"></param>
            public void Insert(T data, int i)
            {
                Node<T> newNode = new Node<T>(data);
                Node<T> tmpNode = new Node<T>();
                tmpNode = Head;
                
                int j = 0;
                while (j < i - 1 && tmpNode.Next != null)
                {
                    tmpNode = tmpNode.Next;
                    j++;
                }
                newNode.Next = tmpNode.Next;
                tmpNode.Next = newNode;
            }
    
            /// <summary>
            /// 删除节点
            /// </summary>
            /// <param name="i"></param>
            public void Delete(int i)
            {
                int j = i;
                Node<T> tmpNode = new Node<T>();
                tmpNode = Head;
                while (j > 0 && tmpNode.Next != null)
                {
                    tmpNode = tmpNode.Next;
                    j--;
                }
                Node<T> curNode = tmpNode.Next;
                tmpNode.Next = curNode.Next;
            }
            /// <summary>
            /// 输出整个链表
            /// </summary>
            public void PrintLinkList()
            {
                Node<T> tmpNode = Head;
                while (tmpNode.Next != Head)
                {
                    tmpNode = tmpNode.Next;
                    Console.WriteLine(tmpNode.Data);
                }
                
            }
        }
    }
  • 相关阅读:
    Linq 和 Lambda 查询中按照多个值进行分组GroupBy
    enter键触发事件的清除
    3、Python 基础类型 -- List 列表类型
    2、Python 基础类型 -- String 字符串类型
    1、Python 基础类型 -- Number 数字类型
    JMeter 常用网站
    性能测试之基础理论
    JMeter 性能测试实例
    JMeter 服务器监控插件环境配置
    【C++】利用指针实现通过函数改变多个参数的值
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/10544542.html
Copyright © 2020-2023  润新知