-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLinkReverse.java
More file actions
64 lines (55 loc) · 971 Bytes
/
LinkReverse.java
File metadata and controls
64 lines (55 loc) · 971 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package 剑指offer;
/**
* 实现链表的反转
* @author DELL
*分别通过循环和递归的方式进行反转操作
*/
public class LinkReverse {
//通过循环来实现反转
public T reverse(T t){
T pre=null;
while(t!=null){
T next=t.next;
t.next=pre;
pre=t;
t=next;
}
return pre;
}
//通过递归来实现链表的反转
public T reverse1(T t1){
if(t1.next==null)
return t1;
T next=t1.next;
T res=reverse1(next);
next.next=t1;
t1.next=null;
return res;
}
T pre=null;
public T reverse2(T t1){
T next=t1.next;
t1.next=pre;
if(next==null)
return t1;
pre=t1;
return reverse2(next);
}
public static void main(String[] args) {
LinkReverse lr=new LinkReverse();
T t1=new T(1);
T t=t1;
for(int i=2;i<9;i++){
t1.next=new T(i);
// System.out.println(t1.value);
t1=t1.next;
}
/*T tt=new T(2);
t1.next=tt;*/
T t2=lr.reverse2(t);
while(t2!=null){
System.out.println(t2.value);
t2=t2.next;
}
}
}