Java实训内容求助

哪位大神能够帮忙解决一下啊,求求了

使用Java模拟创建一个单项链表,数据域为Student类,题主是需要代码吗:

Manage类:

package com.ht.servlet;

import java.sql.*;
public class Manager {
	
    public static void main(String[] args) {
        Connection connection;
        String driver = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
        String user = "root";
        String password = "123456";
        try {
            Class.forName(driver);
            connection = DriverManager.getConnection(url,user,password);
            select(connection);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
 
 
    public static void select(Connection con) throws SQLException {
        Statement statement = con.createStatement();
        String sql = "select * from student";
        ResultSet resultSet = statement.executeQuery(sql);
        int sid;
        String sname;
        int age;
        int grade;
        String hobby;
        
        //初始化链表
        Link link= new Link(); 
        
        while (resultSet.next()){
            sid = resultSet.getInt("sid");
            sname = resultSet.getString("sname");
            age = resultSet.getInt("age");
            grade = resultSet.getInt("grade");
            hobby = resultSet.getString("hobby");
            System.out.println("sid:"+sid+" "+"sname:"+sname
                    +" "+"age:"+age+" "+"grade:"+grade+" "+"hobby:"
                    +hobby
            );
            
            //封装数据域Student
            Student stu = new Student(sid,sname,age,grade,hobby);
            link.addNode(stu);//添加节点
        }
        
        link.display();//遍历所有节点
        
        resultSet.close();
    }
}

Link链表类:

package com.ht.servlet;

public class Link {
	Node head;// 头节点

	public Link() { // 初始化头结点
		head = new Node();
	}
	
	/**
	 * 添加节点(往链表后面添加节点)
	 * 
	 * @param name
	 */
	public void addNode(Student stu) {
		Node curr = head;// 把头结点赋给当前节点
		Node newNode = new Node(stu);// 构造新节点

		while (true) {
			if (curr.getNext() == null) {
				curr.setNext(newNode);// 给当前节点设置下一个节点为新节点
				break;
			}
			curr = curr.getNext();// 把下一个节点赋给当前节点继续循环
		}
	}
	
	// 遍历链表
		public void display() {
			Node curr = head.getNext();// 从头节点的下一个节点开始遍历
			while (curr != null) {
				System.out.println(curr.getStudent().sname);
				curr = curr.getNext();// 把下一个节点赋给当前节点
			}
		}
}

Node节点类:

package com.ht.servlet;

public class Node {
	Student student;//数据域
	Node next;//链域
	
	public Node(){}
	public Node(Student stu){
		this.student=stu;
	}
	public Student getStudent() {
		return student;
	}
	public void setStudent(Student student) {
		this.student = student;
	}
	public Node getNext() {
		return next;
	}
	public void setNext(Node next) {
		this.next = next;
	}
	
	
}

Student数据域类:

package com.ht.servlet;

public class Student {
	 int sid;
     String sname;
     int age;
     int grade;
     String hobby;
    public Student(){}
	public Student(int sid, String sname, int age, int grade, String hobby) {
		super();
		this.sid = sid;
		this.sname = sname;
		this.age = age;
		this.grade = grade;
		this.hobby = hobby;
	}
	@Override
	public String toString() {
		return "Student [sid=" + sid + ", sname=" + sname + ", age=" + age
				+ ", grade=" + grade + ", hobby=" + hobby + "]";
	}
	
     
}

 

//节点类
package T1;

public class SNode {

	private Student stud;
	private SNode next;
	private SNode prior;
	public SNode getPrior() {
		return prior;
	}
	public void setPrior(SNode prior) {
		this.prior = prior;
	}
	public SNode() {
		stud=null;
		prior=null;
		next=null;
	}
	public SNode(Student stud) {
		this.stud=stud;
		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 T1;

import java.util.Scanner;

public class SLink {

	SNode head;
	public SLink() {
		head = new SNode();
	}
	//添加节点
	public void addNode(Student s){
		SNode p = new SNode(s);
		SNode h = head;
		while(h.getNext() !=null){
			h=h.getNext();
		}
		h.setNext(p);
	}
	//6.1.	将存储学生的链表设计为有序的,每次往链表中加学生时,按年龄排序
	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);
	}
	//6.2.	将学生链表改成双向链表,完成同样的功能。
	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{
				p.setNext(h.getNext());
				h.getNext().setPrior(p);
				h.setNext(p);
				p.setPrior(h);
				break;
			}
		}
		h.setNext(p);
		p.setPrior(h);
	}

	//遍历
	public void display(){
		SNode p = head;
		while(p.getNext() !=null){
			System.out.println(p.getNext().getStud());
			p= p.getNext();
		}
		System.out.println("-------------------------------");
		System.out.println(p.getStud());
		while(p.getPrior() !=null){
			System.out.println(p.getPrior().getStud());
			p= p.getPrior();
		}
	}

	//按学号查找
	public Student searchById(int studid){
		Student s = null;
		SNode p = head;
		while(p.getNext() !=null){
			if(p.getNext().getStud().getStudid()==studid){
				s = p.getNext().getStud();
				break;
			}
			p= p.getNext();
		}
		return s;
	}
	//按姓名查找
	public Student searchByName(String name){
		Student s = null;
		SNode p = head;
		while(p.getNext() !=null){
			if(p.getNext().getStud().getName().equals(name)){
				s = p.getNext().getStud();
				break;
			}
			p= p.getNext();
		}
		return s;
	}
	//按姓名查找
	public Student minAge(){
		Student s = null;
		SNode p = head;
		if(p.getNext()==null){
			return null;
		}
		//初始化
		int age=head.getNext().getStud().getAge();
		s = head.getNext().getStud();
		//查找最小年龄的学生信息
		while(p.getNext() !=null){
			if(p.getNext().getStud().getAge()<age){
				age = p.getNext().getStud().getAge();
				s = p.getNext().getStud();
			}
			p= p.getNext();
		}
		return s;
	}
	//按学号删除
	public void deleteById(int studid){
		SNode p = head;
		while(p.getNext() !=null){
			if(p.getNext().getStud().getStudid()==studid){
				p.setNext(p.getNext().getNext());
				break;
			}
			p= p.getNext();
		}
	}
	//按学号删除
	public void deleteByName(String name){
		SNode p = head;
		while(p.getNext() !=null){
			if(p.getNext().getStud().getName().equals(name)){
				p.setNext(p.getNext().getNext());
				break;
			}
			p= p.getNext();
		}
	}
	//交换函数
	public void swap(int studid1, int studid2){
		SNode t1,t2,t3,t4,t5;
		/*
		 * t1:头节点
		 * t2:p1
		 * t3:p2
		 * t4:p3
		 * */
		t1=t2=t3=t4=t5=null;
		SNode p = head;
		int cnt1=0,cnt2=0;
		while(p.getNext() !=null){
			cnt1++;
			if(p.getNext().getStud().getStudid()==studid1){
				t1=p;
				t2=p.getNext();
				break;
			}
			p=p.getNext();
		}
		p = head;
		while(p.getNext() !=null){
			cnt2++;
			if(p.getNext().getStud().getStudid()==studid2){
				t3=p;
				t4=p.getNext();
				break;
			}
			p=p.getNext();
		}
		System.out.println("cnt1="+cnt1+";cnt2="+cnt2);
		/*2个相邻
		 * t1是前面一个
		 * t2,t3是同一个
		 */
		
		if(cnt1+1==cnt2){
			t2.setNext(t4.getNext());
			t1.setNext(t4);
			t4.setNext(t2);
		}else if(cnt2+1==cnt1){
			//t3,t4,t1,t2
			t4.setNext(t2.getNext());
			t3.setNext(t2);
			t2.setNext(t4);
		}else{
			t1.setNext(t4);
			t5=t4.getNext();
			t4.setNext(t2.getNext());
			t2.setNext(t5);
			t3.setNext(t2);
		}
	}
	//不交换节点,只交换节点内的值
	public void swapValue(int studid1, int studid2){
		SNode t1,t2;
		t1=t2=null;
		SNode p = head;
		while(p.getNext() !=null){
			if(p.getNext().getStud().getStudid()==studid1){
				t1=p.getNext();
			}
			if(p.getNext().getStud().getStudid()==studid2){
				t2=p.getNext();
			}
			if(t1!=null && t2!=null)
				break;
			p=p.getNext();
		}
		//临时保存t1的学生资料
		Student s = t1.getStud();
		//把t2节点中的学生资料赋值给t1节点
		t1.setStud(t2.getStud());
		//把临时变量中的学生资料赋值给t2;
		t2.setStud(s);
		
	}
	public static void main(String[] args) {
		SLink link = new SLink();
		Student s1 = new Student(1001,"张三0",118,"宏图1601班");
		Student s2 = new Student(1002,"张三1",82,"宏图1601班");
		Student s3 = new Student(1003,"张三2",30,"宏图1602班");
		Student s4 = new Student(1004,"张三3",33,"宏图1603班");
		Student s5 = new Student(1005,"张三4",44,"宏图1604班");
		link.addNode3(s1);
		link.addNode3(s2);
		link.addNode3(s3);
		link.addNode3(s4);
		link.addNode3(s5);
		link.display();
		//5.3.	可以按学号,名字查找学生
		/*
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你要查询的学生姓名:");
//		int studid = input.nextInt();
		String name = input.next();
		Student t = link.searchByName(name);
		System.out.println("你查找的姓名为:"+name+"的信息如下:");
		if(t==null){
			System.out.println("查无此人");
		}else{
			System.out.println(t);
		}
		*/
		//5.4.	查出节点中年龄最小的学生
//		System.out.println("年龄最小的学生信息如下:");
//		System.out.println(link.minAge());
//		//5.5.	可以按学号,名字删除节点
//		Scanner input = new Scanner(System.in);
//		System.out.println("请输入你要删除的学生姓名:");
////		int studid = input.nextInt();
////		link.deleteById(studid);
//		String name = input.next();
//		link.deleteByName(name);
//		link.display();
//		String name = input.next();
//		Student t = link.searchByName(name);
		
//		5.7.	给定两个学生的学号,将他们的位置互换一下
//		link.swap(1005, 1004);
//		link.display();
		
	}
}

学生类

package T1;

import java.io.Serializable;

public class Student implements Serializable{

	private int studid;
	private String name;
	private int age;
	private String className;
	public Student() {
		
	}
	public Student(int studid,String name,int age,String className) {
		this.studid = studid;
		this.name = name;
		this.age = age;
		this.className = className;
	}
	
	public int getStudid() {
		return studid;
	}
	public void setStudid(int studid) {
		this.studid = studid;
	}
	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 "学号:"+this.studid +",姓名:"+this.name+",年龄:"+this.age +",班级:"+this.className;
	}
}

 

package com.firstday;

import java.sql.*;

public class Manager {
    public static void main(String[] args) {
        Connection connection;
        String driver="com.mysql.cj.jdbc.Driver";
        String url="jdbc:mysql://localhost:3306/test";
        String user="root";
        String password="root";
        try {
            Class.forName(driver);
            connection= DriverManager.getConnection(url,user,password);

            select(connection);

        }catch (
                ClassNotFoundException | SQLException e){
            e.printStackTrace();
        }


    }
    public static void select(Connection con) throws SQLException {
        Statement statement = con.createStatement();
        String sql = "select * from student";
        ResultSet resultSet = statement.executeQuery(sql);
        int sid;
        String sname;
        int age;
        int grade;
        String hobby;
        while (resultSet.next()){
            sid = resultSet.getInt("sid");
            sname = resultSet.getString("sname");
            age = resultSet.getInt("age");
            grade = resultSet.getInt("grade");
            hobby = resultSet.getString("hobby");

            System.out.println("sid:"+sid+" "+"sname:"+sname
                    +" "+"age:"+age+" "+"grade:"+grade+" "+"hobby:"
                    +hobby
            );
        }
        resultSet.close();
    }

}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632