链表反转+合并有序链表+找到倒数第k个节点

链表反转

方法一:迭代法
保存当前节点的下一个节点,防止掉链;当前节点的next指针指向前一个节点;
向后移动节点。

  public ListNode ReverseList(ListNode head) {
        ListNode prev=null;
        while(head!=null){
            ListNode temp=head.next;
            head.next=prev;
            prev=head;
            head=temp;
        }
        return prev;
    }

方法二:递归法

合并有序链表
public ListNode Merge(ListNode list1,ListNode list2) {
        ListNode dummy=new ListNode(0);
        ListNode p=dummy,p1=list1,p2=list2;
        while(p1!=null&&p2!=null){
            if(p1.val<=p2.val){
                p.next=p1;
                p1=p1.next;
            }else{
                p.next=p2;
                p2=p2.next;
            }
                p=p.next;
        }
         if(p1!=null)
           p.next=p1;
         if(p2!=null)
           p.next=p2;
        return dummy.next;
    }
找到倒数第k个节点
 public ListNode FindKthToTail(ListNode head,int k) {
        if(head==null||k==0)
           return null;
        ListNode node=head;
        for(int i=0; i<k;i++){
            if(node==null)
               return null;
             node=node.next;
        }
        while(node!=null){
           head=head.next;
           node=node.next;
        }
        return head;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • //leetcode中还有花样链表题,这里几个例子,冰山一角 求单链表中结点的个数----时间复杂度O(n)这是最...
    暗黑破坏球嘿哈阅读 5,446评论 0 6
  • 【声明】欢迎转载,但请保留文章原始出处→_→文章来源:http://www.jianshu.com/p/08d08...
    梦工厂阅读 9,163评论 3 31
  • 1. 逆序打印链表(单链表) 给定单链表,从尾到头打印每个节点的值,不同的值之间用空格隔开。比如:1>2>3>4>...
    少冰三hun甜阅读 9,471评论 1 12
  • 大学的时候不好好学习,老师在讲台上讲课,自己在以为老师看不到的座位看小说,现在用到了老师讲的知识,只能自己看书查资...
    和珏猫阅读 5,326评论 1 3
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 10,630评论 0 12

友情链接更多精彩内容