import java.io.ObjectInputStream.GetField;
public class lianbiao {
public static void main(String[] args) {
Honer s1 = new Honer(2, "小 红");
Honer s2 = new Honer(3, "小是");
Honer s3 = new Honer(4, "小上");
Honer s4 = new Honer(5, "小啊");
Honer s5 = new Honer(6, "小我");
Take arr = new Take();
arr.add(s1);
arr.add(s2);
arr.add(s3);
arr.add(s4);
arr.add(s5);
arr.println();// 遍历
System.out.println(arr.Findla(arr.getHead(), 1) + "取链表倒数第几个");// 链表取后面的值
System.out.println(arr.Fan(arr.getHead()));
arr.fanzhuan(arr.getHead());
System.out.println("翻转后");
arr.println();// 遍历
}
}
class Take {
private Honer head = new Honer(1, "小明");// 创建链表头
private Honer headd = new Honer(1, "小明");// 创建链表头
public Honer getHead() {
return head;
}
public void setHead(Honer head) {
this.head = head;
}
public void add(Honer honer) {// 在链表中添加
Honer temp = head;
boolean flag = false;
while (true) {
if (temp.neaxt == null) {
flag = true;
break;
}
temp = temp.neaxt;
}
if (flag) {
temp.neaxt = honer;
}
}
public void println() {// 链表的遍历
Honer temp = head;
while (true) {
temp=temp.neaxt;
if (temp == null) {
break;
}
System.out.println(temp);
}
}
public static Honer Findla(Honer head, int index) {// 查询倒数第几个
// 如果链表为空,返回null
Take arr = new Take();
if (head.neaxt == null) {
return null;// 没有找到
}
// 定义给辅助变量,for 循环定位倒数的index
int size = arr.length(head);
Honer cur = head.neaxt;
for (int i = 0; i < size - index; i++) {
cur = cur.neaxt;
}
return cur;
}
public void fanzhuan(Honer head) {// 链表的翻转
Honer tempa=headd;
Honer temp = head;
Take arr = new Take();
int number = 0;
int size = arr.length(head);
boolean falg = true;
while (falg) {
if (size == number) {
falg = false;
}
for (int i = 0; i < size - number; i++) {
temp = temp.neaxt;
}
number++;
System.out.println(temp);
tempa.neaxt=temp;
tempa=tempa.neaxt;
temp = head;
}
temp=tempa;
}
public int Fan(Honer honer) {// 链表反向遍历
Honer temp = head;
Take arr = new Take();
int number = 0;
int size = arr.length(honer);
boolean falg = true;
while (falg) {
if (size == number) {
falg = false;
}
for (int i = 0; i < size - number; i++) {
temp = temp.neaxt;
}
number++;
System.out.println(temp);
temp = head;
}
return 0;
}
public int length(Honer honer) {
Honer temp = honer;
int length = 0;
while (true) {
if (temp.neaxt == null) {
break;
}
length++;
temp = temp.neaxt;
}
return length;
}
}
class Honer {
@Override
public String toString() {
return "Honer [number=" + number + ", name=" + name + ",]";
}
public int number;// 排名
public String name;// 姓名
public Honer neaxt;// 指针
public Honer(int number, String name) {
this.name = name;
this.number = number;
}
}
个人链表小记