反置链表

来源:百度知道 编辑:UC知道 时间:2024/07/03 06:54:37
1List reverse(List l) {
2 if(!l) return l;
3 list cur = l.next;
4 list pre = l;
5 list tmp;
6 pre.next = null;
7 if ( cur ) {
8 tmp = cur;
9 cur = cur.next;
10 tmp.next = pre
11 pre = tmp;
12 }
13 return tmp;
14}
-------------------------------
谁能详细的给解释解释啥意思 详细 谢谢

1 List reverse(List l) { //返回类型List 这个程序就是把输入的List l,里面的指针都反过来.
2 if(!l) return l; //如果List l是空的 返回l
3 list cur = l.next;
4 list pre = l;
5 list tmp;
6 pre.next = null;
7 if ( cur ) { //这个循环不太好讲清楚,其实你可以画个图就很明了了.
8 tmp = cur;
9 cur = cur.next;
10 tmp.next = pre
11 pre = tmp;
12 } //比如List l的内容是 A->B->C->D->... 循环每次只反转一个指针,第一次过后变成 A<-B C->D->...第二次后就是A<-B<-C D->...
13 return tmp; //经过循环后所有指针都反转了.这时tmp指向是队头(就是原来l的队尾,已经反过来了),把tmp返回.
14}