有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何计算数据结构中的相同名称?

我需要在二叉搜索树和单链表中计算相同学生的名字。但我找不到该怎么做。有人有答案吗

public class Student  {

   private int ID;
   private String name;
   private String surname;

   public Student(int id, String n, String s)
   {
      ID = id;
      name = n;
      surname = s;
   }

   public int getID() 
   {
      return ID;
   }

   public String getName() 
   {
      return name;
   }

   public String getSurname()
   {
      return surname;      
   }

   public void setID(int newID) 
   { 
      ID = newID; 
   }

   public void setName(String newName) 
   { 
      name = newName; 
   }

   public void setSurname(String newSurname)
   {
      surname = newSurname;
   }

   public String ToString()
   {
      return "\nname : "+name+"\nsurname : "+surname+"\nid : "+ID+"\n"; 
   }
}

学生班以上

public class NodeBST 
{
   private Student s;
   private NodeBST left;
   private NodeBST right;
   private int index ;

   public NodeBST(Student newS) 
   {
      s = newS;
      left = null;
      right = null;
      index = 0 ;
   }

   public int getIndex(){
      return index ;
   }

   public Student getStudent() 
   { 
      return s;
   }

   public NodeBST getLeft() 
   {
      return left; 
   }

   public NodeBST getRight() 
   {
      return right; 
   }

   public void setIndex(int idx){
      index = idx ;
   }

   public void setStudent(Student newS) 
   { 
      s = newS; 
   }

   public void setLeft(NodeBST newLeft) 
   {
      left = newLeft; 
   }

   public void setRight(NodeBST newRight) 
   {
      right = newRight; 
   }

   public boolean hasLeft() 
   {
       return (left != null);
   }

   public boolean hasRight() 
   {
       return (right != null);
   }
}

上面的二叉搜索树的节点类

import java.util.*;
public class BST 
{
   private NodeBST root;   
   int size ;
   String[] names ;

   public BST() 
   {
      names = new String[50];
      root = null;
      size = 0 ;
   }

   public BST(NodeBST newNodeBST) 
   {
      root = newNodeBST;
   }

   public boolean isEmpty() 
   {
      return (root == null);
   }

   public void insert(NodeBST newNodeBST) 
   {
      if(isEmpty())
      { // root is null
         root = newNodeBST;
         root.setIndex(size);
         names[size] = root.getStudent().getName() ;
         size++;
      }
      else
      {
         NodeBST tempNodeBST = root;
         while(true)
         {
            if(newNodeBST.getStudent().getID() < tempNodeBST.getStudent().getID())
            {
               if(tempNodeBST.getLeft() == null)
               {
                  tempNodeBST.setLeft(newNodeBST);
                  tempNodeBST.getLeft().setIndex(size);
                  size++;
                  break;
               }   
               else
                  tempNodeBST = tempNodeBST.getLeft();
            }
            else
            {
               if(tempNodeBST.getRight() == null)
               {
                  tempNodeBST.setRight(newNodeBST);
                  tempNodeBST.getRight().setIndex(size);
                  size++;
                  break;
               }   
               else
                  tempNodeBST = tempNodeBST.getRight();
            }
        }   
    }

有一种方法可以在二进制搜索3中插入student。那么我如何在这个二叉搜索树中计算相同的名字呢。下面是我如何尝试这样做,但没有成功

    public void nameCounter(){
    String [] tempNames = names ;
    for(int element = 0 ; element < size ; element++){
        int contains = 1 ;
        for(int counter = element ; counter < size ; counter++){
            if(tempNames[element].equals(tempNames[counter]) && element != counter)        { 
               contains++;
            }
        }
        System.out.println(tempNames[element] +" : "+contains);
    }
}

我该怎么解决


共 (0) 个答案