ListNode链表

ListNode链表          ListNode链表此类里面是:              publicclassListNode{              ListNodenext=null;              intval;              publicListNode(intval){              this.val=val;     …

大家好,欢迎来到IT知识分享网。

        

    ListNode链表此类里面是:

                public class ListNode{

                ListNode next=null;

                int val;

                public ListNode(int val){

                this.val=val;

                        }

            }                

    此类中包含了指向当前值的val,以及指向下一个值的next;

    一:一直在纠结:给入的值是一个数组形式的值,但这个类中怎么就只能存放当前值和下一个值呢?

        原来:传入的时候也是一个值一个值的传入,而不是一次性的传入了一链儿值。

                因此在这里也知道了next!=null的意义:当下一个值不为空的期间内,一直执行此for/while里面的操作。

    这么说可能还不是怎么太懂,那就上例题:

                                将链表反序。1->2-> 3-> 4-> 5   变为 1<-2 <-3 <-4 <- 5              

       

public
class
Solution {  
                //在这里仿佛是一根虎节鞭,从头到尾一节节进入这个函数中来!!!    
    
public
ListNode ReverseList(ListNode head) {
                ListNode pre=next=null; 
                
                //当进入的鞭子是无节只有把的    
                if(head==null)
                //那我就什么也不操作,返回无
                  return null;
             while(head!=null){  //我就代表一直让鞭子传入进来,知道最后。
                
                next=head.next;  //将下一个值保存起来,因为我要将head.next转换为他的前一个节点pre
                head.next=pre;   //将head的下一个值指向head的前一个值,完成指向反转!!!
                pre=head;        //指向反转后,只需将pre移动指向head即可(第一个转向完成了,忒继续进行下一个转向!)
                head=next;       //继续进行下一个值,完成上述操作
                }
             
  return pre;

                        }

            }


再拿一一小题练练手吧:

                               链表的合并:将两个链表从小到大合并。

                                例子:{1,3,5,7,9}和{2,4,6,8}两个链表合并了

                

public
class
Solution {  
                              //传入有两条含有不同大小节的鞭子
    
public
ListNode ReverseList(ListNode list1,ListNode list2) {
                            
                  if(list1==null)
                   return list2;

                if(list2==null)
                 return list1;

                  //如果list1鞭子中的当前节中的值比list2
鞭子中的当前节

                  if(list1.val<=list2.val){
                list1.next=
ReverseList(list1.next,list2);

                   //把小的这节丢上去,继续进行有该小的这节鞭子的下一个值进行比对。
                   return list1; 
               }else{

              list2.next=
ReverseList(list1,list2.next);

                 return list2; 
               }
        }

    }

总结ListNode的重要思想:

                    万变不离其宗,最重要的就是ListNode类,类里面的包括next,head和当前值,只要把这三个值的逻辑捋清楚,

                    那么再是用循环还是不断返回当前链表值,都是进一步事情了!

 
              

                       

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11139.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信