链表反转java代码实现,java单链表反转代码

java反转链表 大神给我添加个注释好么,我自己研究

public class Linktest {

专注于为中小企业提供成都做网站、成都网站制作、成都外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业上林免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

//反转方法 ,传入一个链表

public static LinkNode reversal(LinkNode list){

//pre用来存放前一个链表节点

LinkNode pre =list;

//取出下一个链表节点 ,cru 用来存放当前链表节点        

LinkNode cru = list.getNext();

//next用来存放下一个链表节点        

LinkNode next;

//如果当前节点不为空(这里意思是 如果传进来的list 有下一个节点就继续执行)        

while(null!=cru){

//取出当前节点的下一个节点        

next = cru.getNext();

//把前一个节点赋予当前节点的下一个节点(这里产生实际改变)

cru.setNext(pre);

//把当前节点变量赋予前一个节点的变量            

pre=cru;

//把下一个节点变量赋予当前

cru = next;            

}

//循环体内会循环到方法传入的LinkNode 没有前一个节点为止

//因为几次交换的原因

//因为循环结束,所以把next赋空

list.setNext(null);

//因为循环的原因,前一个节点实际是第一个节点        

list=pre;

//返回第一个节点        

return list;

}

public static void main(String[] args) {

LinkNode head = new LinkNode(0);   

LinkNode tmp = null;   

LinkNode cur = null;   

for (int i = 1; i  10; i++) {   

tmp = new LinkNode(i);   

if (1 == i) {   

head.setNext(tmp);   

} else {   

cur.setNext(tmp);   

}   

cur = tmp;   

}  

LinkNode h = head;   

while (null != h) {   

System.out.print(h.getVal() + " ");   

h = h.getNext(); 

}

head = reversal(head);   

System.out.println("\n**************************");   

//打印反转后的结果   

while (null != head) {   

System.out.print(head.getVal() + " ");   

head = head.getNext();   

}   

}

}

请用C或者Java语言写出实现将单向链表顺序反转的函数。

ListItem* reverseList(ListItem *pHead){

ListItem *p1,*p2;

p1=pHead;

p2=0;

while(p1!=0){

pHead=p1;

p1=p1-next;

pHead-next=p2;

p2=pHead;

}

return pHead;

}

编程实现:链表反转,求代码

不知道你是需要用STL来写还是类似C的写法,给个简单的例子吧#include "stdafx.h"

#include "malloc.h"

#include "ostream.h"typedef struct _Node

{

int value;

_Node * pNext;

}Node;Node * InitList()

{

Node * pHead = (Node*)malloc(sizeof(Node));

Node * pNode = pHead;

pHead-value = 0;

for(int i = 1; i 50; i )

{

pNode-pNext = (Node *)malloc(sizeof(Node));

pNode = pNode-pNext;

pNode-value = i;

pNode-pNext = NULL;

}

return pHead;

}

//返回尾节点

Node * Revert1(Node * pHead)

{

Node * pfather = pHead;

Node * pNode;

if(!pfather) return NULL;

pHead = pHead-pNext;

pfather-pNext = NULL;

while(pHead != NULL)

{

pNode = pHead-pNext;

pHead-pNext = pfather;

pfather = pHead;

pHead = pNode;

}

return pfather;

}

//返回尾节点

Node * Revert2(Node * pHead, Node * pfather = NULL)

{

Node * ret = NULL;

if(!pHead) return NULL;

if(pHead-pNext)

ret = Revert2(pHead-pNext, pHead);

pHead-pNext = pfather;

if(!ret)

return pHead;

else

return ret;

编写实现单向链表逆转程序,要求使用最小附加空间

void reverse()

{

Node *prev,*current;  

prev=head;     //从头结点开始处理   

if(head==NULL)  return;

for(current=prev-next;current!=NULL;current=current-next) //顺序处理结点

{

current-next=prev;  //下一个结点的next指点上一个结点,即将链表反转

prev=current;     //保存上一个结点

}

head=prev;  //head为最后一个结点

}

Java语言写出实现将单向链表顺序反转的函数?

假设链表的节点定义如下:

class Node{

int i;

Node next;

}

那么其反转函数为:

void reverse(Node l){

if(l==null) return;

Node p=null,q=l,r=l.next;

while(r!=null){

q.next=p;

p=q;

q=r;

r=r.next;

}

q.next=p;

l=q;

}

java实现单链表的反转? java实现两个无序单链表合并成一个有序的单链表?谁能给个效率较高的代码,谢谢!

单链表的反转,参考下吧

static Node reverse(Node x) {

Note t, y = x, r = null;

while(y != null) {

t = y.next; y.next = r; r = y; y = t;

}

return r;

}


文章标题:链表反转java代码实现,java单链表反转代码
链接分享:http://myzitong.com/article/dscphgj.html