单链表逆置的实现

来源:互联网 发布:现在最流行的网络词语 编辑:程序博客网 时间:2024/06/01 08:47

单链表逆置,就是将节点a1,a2…an转变成an,an-1…a1,并且要求使用原来链表的空间,空间复杂度要求为O(1)。

逆置单链表至少需要两个辅助节点p,q,并且利用头结点head。p用来遍历单链表,q用来记录当前节点,head记录前一节点。通过这三个节点,就能实现单链表的逆置。

p与q在每次循环前应指向同一节点,head指向p,q的前一节点。

代码如下:

public Node verse (Node head){    Node p = null;    Node q = null;//将p,q设为同一节点    p = head.getnext();    if(p==null)    {        return head;    }    q = p;//将head初始化为空    head = null;    while(p!=null)    {//通过p节点遍历链表        p = p.getnext();//q节点把当前节点的后置节点设为自己前一个节点        q.setnext(head);//head后移一个节点        head = q;//q后移一个节点        q = p;    }    Node newhead = new Node();    newhead.setnext(head);//返回一个新的head值,如果单链表为一个节点,返回原head,如果为2个或2个以上的节点,返回逆置以后的头结点。    return newhead;}

单链表逆置的关键点在于

p用来遍历单链表,q用来记录当前节点,head记录前一节点。

p用来遍历单链表,q用来记录当前节点,head记录前一节点。

p用来遍历单链表,q用来记录当前节点,head记录前一节点。

p与q在每次循环前应指向同一节点,head指向p,q的前一节点。

p与q在每次循环前应指向同一节点,head指向p,q的前一节点。

p与q在每次循环前应指向同一节点,head指向p,q的前一节点。

重要的事情说三遍!~~

0 0
原创粉丝点击