Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(196评价)
价格: 4009.00元
关于链表的问题
兔子雷发起了问答2017-10-17
2
回复
497
浏览

SIKI老师啊..我之前没接触过指针这东西,学A计划之前也是程序0基础,今天突然基础有点晕..

如下:是单链的那个视频

 public void Add(T item)
        {
            //根据一个新的数据创造一个新的节点.如果为空这个节点为头节点,如果不为空 添加到末尾.
            Node<T> newNode = new Node<T>(item);  
            if (head==null)
            {
                head = newNode;
               
            }
            else
            {
                //把新来的节点放到链表尾部
                Node<T> temp = head;
                while (true)
                {
                    if (temp.Next!=null)
                    {
                        temp = temp.Next;
                       
                    }
                    else
                    {
                        break;
                        
                    }
                }
                temp.Next = newNode;//把新来的节点 放在链表尾部.
            }
        }

我的疑问:

1.我在Node<T> 类里面定义了一个 指针next,然后给他了一个get set方法.但是我不明白,这个NEXT方法怎么体现出"下一个地址".这个功能的?

2.在这个添加元素的方法中,我们创建了一个newNode指针.然后判断head指针是不是空的,如果是,将head指针指向newNode节点.下面的判断是temp.Next不等于空我们就temp=temp.next.一直循环到 temp.next==null..结束循环.这里我很不理解.

假如说我已经添加了很多元素.我再添加新元素,~这个temp.next怎么做到~~能表示那么多后面元素地址的?难道说我每次添加temp.next=newNode..后面每个元素都有一个叫做"Next"的地址指向他们?通过这个NEXT这个地址就能找到下一个?这里我没理解.

所有回复
  • siki 2017-10-18

    1,因为这里我们把下一个节点引用给了next,所以next才有了下一个地址的功能(可以通过next访问到下一个节点了)

    2,我们只保存了一个头结点,要通过循环找到尾结点,新添加的节点要赋值给尾结点

    1.next -> 2   2.next-> 3    第一个数据引用第二个数据,第二个数据引用第三个数据.... 这样一直引用,所以每次查找数据都是从头结点开始查找

    • 兔子雷 2017-10-18

      谢谢老师..-.-其实 写上面提问的时候..写着写着我自己就想明白了...-.-哈哈 不过还是想看看老师回答是不是跟我想的一致

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!