【数据结构】单链表(二)单链表的逆置,合并与删除

来源:互联网 发布:免费财务分析软件 编辑:程序博客网 时间:2024/06/07 11:51

接下来我们讨论下链表的一些高级操作

逆置(循环写法):

public Node reverse(Node head) {Node reverseHead = null;Node runner = head;while (runner != null) {Node next = runner.next;runner.next = reverseHead;reverseHead = runner;runner = next;}return reverseHead;}

逆置(递归写法):

public static Node reverseRec(Node head) {if(head==null)return head;return reverseRec(head, head.next);}public static Node reverseRec(Node prev, Node curr) {if(curr==null)return prev;Node reverseHead = reverseRec(prev.next, curr.next);curr.next=prev;prev.next=null;return reverseHead;}

合并:

public static void merge(Node head1, Node head2) {while (head1 != null && head2 != null) {if (head1.next == null) {head1.next = head2;return;}Node next = head2.next;head2.next = head1.next;head1.next = head2;head1 = head2.next;head2 = next;}}


删除:

public void deleteNode(Node Delete) {if (Delete == null || Delete.next == null)return;Delete.item = Delete.next.item;Delete.next = Delete.next.next;}


0 0
原创粉丝点击