⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 liti2_2 - 复制.java

📁 可以参考的Java双链表
💻 JAVA
字号:
import java.util.LinkedList;
import java.io.*;
class StudNode{
  //1属性定义
  String name;
  int studentNo;
  double score;
  StudNode next;//指针
  public StudNode(){}
  public StudNode(String name,int studentNo,double score){
    this.name=name;
    this.studentNo=studentNo;
    this.score=score;
  }
  public void setNext(StudNode node){
    this.next=node;
  }
  public StudNode getNext(){return next;}
  public void setName(String name){
  	this.name=name;
  	
  }
  public void setStudentNo(int studentNo){
  	this.studentNo=studentNo; 	
  }
  public void setScore(double score){
  	this.score=score;
  }
  public String getName(){
  	return name;
  	}
  public int getStudentNo(){
  	return studentNo;
  	}
  public double getScore(){
  	return score;
  	}  	  	
  public String toString(){
    return studentNo+","+name+","+score;
  }
}
class StudLinkedList extends LinkedList{//单链表
    private StudNode head;//链表头
	private int count;//记录计数器
	StudLinkedList(){
	  head=null;
	  count=0;
	}
	public void add(StudNode node){   //在单链表的尾部添加一个学生的记录
    	StudNode current=head,pre=head;
  		if(head==null)
      	  head=node;
  		else{//寻找新节点的插入位置
  	  	  while(current!=null)//寻找尾结点  
  	  	   if(current.studentNo>node.studentNo) 
  	  	      break;//找到插入位置
  	  	   else{
  	  	       pre=current;	   
  	           current=current.getNext();
  	        }
  	      //将node插入到current接点的前面。分3种情况
  	      if(current==null)
  	          pre.next=node;
  	        
  	      else if(current==head) {
  	               head=node;
  	               node.next=current;
  	      }	       
  	      else{
  	           pre.next=node;
  	           node.next=current;	
  	        	
  	      }
  	        	
  	    } 
  	   
  	    count++; //记录计数器+1
    }
   public void listAll(){             //遍历单链表表中所有学生的记录
       StudNode current=head;
  	   while(current!=null){
  	     System.out.println(current);
  	     current=current.getNext();
       }
       System.out.println("共有记录"+count+"条");
   }
   public void search(String name){    //按姓名查询某个学生的信息并输出。
   	  StudNode current=head;//定义变量current 作为循环变量,初值为head
   	  int flag=-1;//定义查找标志flag,初值为-1
   	  while(current!=null)//循环语句
   	    if(current.name.equals(name)){//比较current.name 和name ,如果相同,表示找到要找的人,置查找标志为1,退出循环。
   	       flag=1;
   	       break;
   	    }else //否则,将current指向下一个结点,继续查找
   	       current=current.next;	 
   	  if(flag==1) //循环结束后,根据查找标志输出是否找到信息。
   	    System.out.println("您找的人是:"+current); 	
   	  else
   	    System.out.println("没有您找的人!!");
   }
   public void delete(String name){
      StudNode pre=head,current=head;//定义变量current 作为循环变量,初值为head
   	  int flag=-1;//定义查找标志flag,初值为-1
   	  while(current!=null)//循环语句
   	    if(current.name.equals(name)){//比较current.name 和name ,如果相同,表示找到要找的人,置查找标志为1,退出循环。
   	       flag=1;
   	       break;
   	    }else {//否则,将current指向下一个结点,继续查找
   	       pre=current;
   	       current=current.next;	 
   	    }
   	  if(flag==1){ //循环结束后,根据查找标志输出是否找到信息。
   	    System.out.println("您找的人是:"+current); 	
   	    //对要删除的结点进行判断,它有三种情形 ,分别进行指针修改
   	    if(current==head)//1 删除的是头结点
   	        head=current.next;
   	    else if(current.next==null)//2 删除的是尾结点
   	    		pre.next=null;
   	         else
   	    	 	pre.next=current.next;	
   	        
   	    //3 删除的是中间结点
   	    
   	  }  
   	  else
   	    System.out.println("没有您找的人!!");
   
   }
}

class User{
  public static void main(String args[])throws IOException{
    StudLinkedList stud=new StudLinkedList();
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    while (true){
    System.out.print("********学生成绩管理程序**********\n" );
    System.out.print("1 增加记录\n" );
    System.out.print("2 显示所有信息\n");
	System.out.print("3 查询记录\n");
	System.out.print("4 删除记录\n");
 	System.out.print("0 退出\n\n");
	System.out.print("请输入你的选择:");
	int choice = Integer.parseInt(br.readLine());
    switch(choice){
		case 0:
		     System.exit(0);
		case 1: 
		     System.out.print("\n请输入学号:");
			 int sNum=Integer.parseInt(br.readLine());
		     System.out.print("请输入姓名:");
			 String sName=br.readLine();
			 System.out.print("请输入成绩:");
			 double sScore=Double.parseDouble(br.readLine());
			 StudNode snode=new StudNode(sName,sNum,sScore);
			 stud.add(snode);
			 System.out.println();
			 break;
		case 2:
			 stud.listAll();
			 System.out.println();
			 break;
		case 3:
			 System.out.print("请输入要查找的姓名:");
			 sName=br.readLine();
			 stud.search(sName);
			 break;
		case 4:
			 System.out.print("请输入要删除的姓名");
			 sName=br.readLine();
			 stud.delete(sName);
			 break;		
			 }	    
	}  
	} 
	
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -