创建一个学生列表,对其进行操作
package TestLink;
import java.io.Serializable;
/**
* 设计一个学生类,姓名,学号,年龄,班级
*
*/
public class Student implements Serializable{
private String number;
private String name;
private int age;
private String className;
public Student() {
// TODO Auto-generated constructor stub
}
public Student(String number, String name, int age, String className) {
this.number = number;
this.name = name;
this.age = age;
this.className = className;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@Override
public String toString() {
return "Student [number=" + number + ", name=" + name + ", age=" + age + ", className=" + className + "]";
}
}
public class SNode {
private Student stud;
private SNode next;
private SNode prev;
public SNode() {
stud=null;
next=null;
prev=null;
}
public SNode getPrev() {
return prev;
}
public void setPrev(SNode prev) {
this.prev = prev;
}
public SNode(Student stu) {
this.stud=stu;
next=null;
}
public Student getStud() {
return stud;
}
public void setStud(Student stud) {
this.stud = stud;
}
public SNode getNext() {
return next;
}
public void setNext(SNode next) {
this.next=next;
}
}
package TestLink;
import java.util.Scanner;
public class SLink {
SNode head;
public SLink() {
head=new SNode();
}
//新增学生
public void addNode(Student s) {
SNode h=head;
while(h.getNext()!=null) {
h=h.getNext();
}
SNode p=new SNode(s);
h.setNext(p);
}
//将新增学生的链表设计为有序,按照年龄的大小排
public void addNode2(Student s) {
SNode p=new SNode(s);
SNode h=head;
while(h.getNext()!=null) {
if(h.getNext().getStud().getAge()<=s.getAge()) {
h=h.getNext();
}else {
p.setNext(h.getNext());
h.setNext(p);
break;
}
}
h.setNext(p);
}
public void addNode3(Student s) {
SNode p=new SNode(s);
SNode h=head;
while(h.getNext()!=null) {
if(h.getNext().getStud().getAge()<=s.getAge()) {
h=h.getNext();
}else {
h.getNext().setPrev(p);
p.setNext(h.getNext());
h.setNext(p);
p.setPrev(h);
break;
}
}
h.setNext(p);
p.setPrev(h);
}
//遍历
public void display() {
SNode p=head;
while(p.getNext()!=null) {
System.out.println(p.getNext().getStud());
p=p.getNext();
}
}
//按照学号查找||按照姓名查找
public void findNode(String data) {
SNode p=head;
while(p.getNext()!=null) {
if(p.getNext().getStud().getNumber().equals(data)) {
System.out.println("该学生的信息如下");
Student stud = p.getNext().getStud();
System.out.println(stud);
break;
}else if(p.getNext().getStud().getName().equals(data)) {
System.out.println("该学生的信息如下");
Student stud = p.getNext().getStud();
System.out.println(stud);
break;
}
else {
p=p.getNext();
}
}
if(p.getNext()==null) {
System.out.println("查无此人");
}
}
//查找年龄最小的学生
public void MinStudent() {
SNode p=head;
int age=p.getNext().getStud().getAge();
Student stud=p.getNext().getStud();
while(p.getNext().getNext()!=null) {
if(age>p.getNext().getNext().getStud().getAge()) {
stud=p.getNext().getNext().getStud();
p=p.getNext();
}else {
p=p.getNext();
}
}
System.out.println(stud);
}
//可以按照学号和名字删除结点
public void deletStudent(String data) {
SNode p=head;
while(p.getNext()!=null) {
if(p.getNext().getStud().getName().equals(data)) {
p.setNext(p.getNext().getNext());
break;
}else if(p.getNext().getStud().getNumber().equals(data)) {
p.setNext(p.getNext().getNext());
break;
}else {
p=p.getNext();
}
}
}
//给定俩个学生的学号,将他们的位置互换一下
public void swapStudent(String data1,String data2) {
SNode t1,t2,t3,t4;
t1=t2=t3=t4=null;
int count1=0,count2=0;
SNode p=head;
while(p.getNext()!=null) {
count1++;
if(p.getNext().getStud().getNumber().equals(data1)) {
t1=p;
t2=p.getNext();
break;
}
p=p.getNext();
}
p=head;
while(p.getNext()!=null) {
count2++;
if(p.getNext().getStud().getNumber().equals(data2)) {
t3=p;
t4=p.getNext();
break;
}
p=p.getNext();
}
if(count1<count2) {
if(t2.getNext()==t3) {
t3.setNext(t2);
t2.setNext(t4.getNext());
t4.setNext(t3);
t1.setNext(t4);
}
else if(t2==t3) {
t2.setNext(t4.getNext());
t4.setNext(t2);
t1.setNext(t4);
}
else if(t2.getNext()!=t3) {
SNode temp=null;
temp=t2.getNext();
t2.setNext(t4.getNext());
t3.setNext(t2);
t4.setNext(temp);
t1.setNext(t4);
}
}
if(count1>count2) {
SNode p1=t1;
t1=t3;
t3=p1;
p1=t2;
t2=t4;
t4=p1;
if(t2.getNext()==t3) {
t3.setNext(t2);
t2.setNext(t4.getNext());
t4.setNext(t3);
t1.setNext(t4);
}
else if(t2==t3) {
t2.setNext(t4.getNext());
t4.setNext(t2);
t1.setNext(t4);
}
else if(t2.getNext()!=t3) {
SNode temp=null;
temp=t2.getNext();
t2.setNext(t4.getNext());
t3.setNext(t2);
t4.setNext(temp);
t1.setNext(t4);
}
}
}
//只是交换俩个学生的信息
public void swapValue(String data1,String data2) {
SNode t1,t2;
t1=t2=null;
SNode p=head;
while(p.getNext()!=null) {
if(p.getNext().getStud().getNumber().equals(data1)) {
t1=p.getNext();
}
if(p.getNext().getStud().getNumber().equals(data2)) {
t2=p.getNext();
}
if(t1!=null&&t2!=null) {
break;
}
p=p.getNext();
}
Student s=t1.getStud();
t1.setStud(t2.getStud());
t2.setStud(s);
}
public static void main(String[] args) {
SLink link=new SLink();
}
}