#Person 是一个链表的结构
package
com.java.demo.link;
public
class
LinkList {
/**
* 建立一个链表结构的结构
* @param args i 表示有几代人
*/
private
static
Person getPerson(
int
i) {
Person resultPerson =
new
Person(
"P"
+ i);
i--;
while
(i >
0
) {
Person p =
new
Person(
"P"
+ i);
p.son = resultPerson;
resultPerson = p;
i--;
}
return
resultPerson;
}
/**
* 反转链表
* @param p
* @return
*/
private
static
Person reverse(Person p){
Person resultPerson = p.son;
if
(!Person.isTail(p)) {
Person temp = p.son;
p.son =
null
;
resultPerson = p;
p = temp;
}
while
(!Person.isTail(p)){
Person temp = p.son;
p.son = resultPerson;
resultPerson = p;
p = temp;
}
if
(Person.isTail(p)) {
p.son = resultPerson;
resultPerson = p;
}
return
resultPerson;
}
/**
* 打印p链表
* @param args
*/
private
static
void
showPersons(Person p){
while
(!Person.isTail(p)) {
System.out.print(p.name +
"->"
);
p = p.son;
}
if
(Person.isTail(p)) {
System.out.println(p.name);
}
}
public
static
void
main(String[] args){
LinkList list =
new
LinkList();
Person p = getPerson(
10
);
showPersons(p);
p = reverse(p);
showPersons(p);
}
}
class
Person {
public
String name;
public
Person son;
public
Person(String name) {
this
.name = name;
}
public
static
boolean
isTail(Person p){
return
p.son ==
null
;
}
}