链表反转与删除节点

1.反转链表

//1.单链表
public static Node reverseLinkedList(Node head){
       Node next = null;
       Node pre = null;
       while (head!=null){
           next = head.next;
           head.next = pre;
           pre = head;
           head = next;
       }
       return pre;
   }
//2.双链表
public static DoubleNode reverseDoubleList(DoubleNode head){
       DoubleNode pre = null;
       DoubleNode next = null;
       while (head!=null){
           next = head.next;
           head.next = pre;
           head.last = next;
           pre = head;
           head = next;
       }
       return pre;
   }

2.删除单链表中指定值,并返回头节点。

public static Node delNode(Node head, int value){
       //找到第一个不需要删除的节点
       while(head!=null){
           if(head.value!=value)
               break;
           head= head.next;
       }
       Node pre = head;
       Node cur = head;
       while (cur!=null){
           if(cur.value==value)
               pre.next=cur.next;
           else
               pre=cur;
           cur= cur.next;
       }
       return head;
   }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容