Beispiel #1
0
        //添加节点
        //添加节点到单向链表
        //思路,当不考虑编号顺序时
        //1. 找到当前链表的最后节点
        //2. 将最后这个节点的next 指向 新的节点
        /// <summary>
        ///    无序插入
        /// </summary>
        /// <param name="heroNode"></param>
        public void Add(HeroNode heroNode)
        {
            HeroNode temp = head;

            while (true)
            {
                if (temp.next == null)
                {
                    break;
                }

                temp = temp.next;
            }

            temp.next = heroNode;
        }
Beispiel #2
0
        /// <summary>
        ///     修改节点信息
        ///         //修改节点的信息, 根据no编号来修改,即no编号不能改.
        ///     说明
        ///         1. 根据 newHeroNode 的 no 来修改即可
        /// </summary>
        /// <param name="heroNode"></param>
        public void Update(HeroNode newHeroNode)
        {
            //判断是否为空
            if (head.next == null)
            {
                Console.WriteLine("链表为空");

                return;
            }

            //找到需要修改的节点, 根据no编号
            //定义一个辅助变量

            HeroNode temp = head.next;
            bool     flag = false;

            while (true)
            {
                if (temp == null)
                {
                    break;
                }

                if (temp.no == newHeroNode.no)
                {
                    //说明已经找到了
                    flag = true;
                    break;
                }

                temp = temp.next;
            }

            if (flag)
            {
                temp.nickname = newHeroNode.nickname;
                temp.name     = newHeroNode.name;
            }
            else
            {
                Console.WriteLine("没有找到对应的信息");
            }
        }
Beispiel #3
0
        //第二种方式在添加英雄时,根据排名将英雄插入到指定位置
        //(如果有这个排名,则添加失败,并给出提示)

        /// <summary>
        /// 有序插入
        /// </summary>
        /// <param name="heroNode"></param>
        public void AddOrderBy(HeroNode heroNode)
        {
            HeroNode temp = head;

            bool flag = false;

            while (true)
            {
                //说明temp已经在链表的最后
                if (temp.next == null)
                {
                    break;
                }

                //位置找到,就在temp的后面插入  当前的下一个节点大于插入的节点
                if (temp.next.no > heroNode.no)
                {
                    break;
                }
                else if (temp.next.no == heroNode.no)
                {
                    flag = true;  //说明编号存在
                    break;
                }

                temp = temp.next;
            }

            if (flag)
            {
                Console.WriteLine("当前英雄已存在");
            }
            else
            {
                //插入到链表中, temp的后面
                heroNode.next = temp.next;
                temp.next     = heroNode;
            }
        }
Beispiel #4
0
        public void List()
        {
            if (head.next == null)
            {
                Console.WriteLine("你的链表为null;");
                return;
            }

            HeroNode temp = head.next;

            while (true)
            {
                if (temp == null)
                {
                    break;
                }

                Console.WriteLine(temp.toString());

                temp = temp.next;
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            //先创建节点
            HeroNode hero1 = new HeroNode(1, "宋江", "及时雨");
            HeroNode hero2 = new HeroNode(2, "卢俊义", "玉麒麟");
            HeroNode hero3 = new HeroNode(3, "吴用", "智多星");
            HeroNode hero4 = new HeroNode(4, "林冲", "豹子头");

            //创建要给链表
            SingleLinkedList singleLinkedList = new SingleLinkedList();


            //加入 无序添加


            // 测试一下单链表的反转功能
            Console.WriteLine("原来链表的情况~~");

            singleLinkedList.List();


            Console.WriteLine("有序添加情况");
            singleLinkedList.AddOrderBy(hero3);
            singleLinkedList.AddOrderBy(hero1);
            singleLinkedList.AddOrderBy(hero4);
            singleLinkedList.AddOrderBy(hero2);

            Console.WriteLine("无需添加后链表的情况~~");

            singleLinkedList.List();



            Console.ReadKey();
        }