一根路过的废柴 2021-07-02 15:48 采纳率: 95.2%
浏览 39
已采纳

这里为什么只输出了第一个数字

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            LinkHead<int> node = new LinkHead<int>();
            node.AddLast(1);
            node.AddLast(5);
            node.AddLast(6);
            node.Display();
        }
    }
    class Node<T>
    {
        public T Date { get; internal set; }
        public Node<T> Next { get; internal set; }
        public Node(T date)
        {
            this.Date = date;
        }
        public Node()
        {
            //……
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class LinkHead<T>
    {
        public Node<T> Head { get; private set; }
        public void AddLast(T item)
        {
            Node<T> p = new Node<T>(item);
            Node<T> q = new Node<T>();
            if(Head==null)
            {
                Head = p;
                return;
            }
            q = Head;
            while(q!=null)
            {
                q = q.Next;
            }
            q = p;
        }

        public void Display()
        {
            Node<T> a = new Node<T>();
            a = Head;
            while(a!=null)
            {
                Console.WriteLine(a.Date);
                a=a.Next;
            }
        }
    }
}

img

  • 写回答

4条回答 默认 最新

  • hxycsdn9159 2021-07-02 18:04
    关注

    逻辑有问题,单链表的第一个节点你就断了,用我的代码试试:

        class LinkHead<T>
        {
            public Node<T> Head { get; private set; }
            public Node<T> Foot { get; private set; }
            public void AddLast(T item)
            {
                Node<T> p = new Node<T>(item);
                if (Head == null)
                {
                    Head = p;
                    Foot = Head;
                    return;
                }
                else
                {
                    Foot.Next = p;
                    Foot = p;
                }
            }
    
            public void Display()
            {
                Node<T> a = Head;
                do
                {
                    Console.WriteLine(a.Date);
                    a = a.Next;
                } while (a != Foot.Next);
            }
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥15 配置hadoop时start-all.sh老是启动失败
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题