2019 - 2020 - 1 실험 8 보고서

7286 단어
2019 - 2020 - 1 실험 8 보고서
과정: 반: 1823 이름: 조 천 호 학 번: 20182327 실험 교사: 왕 지 강 실험 날짜: 2019 년 11 월 7 일 필수/선택 과목: 필수
1. 실험 내용
  • 1. 교재 PP 16.1 을 참고 하여 체인 트 리 LinkedBinary Tree 의 실현 (getRight, contains, toString, preorder, postorer)
  • 을 완성 합 니 다.
    JUnit 또는 자체 구동 류 를 작성 하여 자신 이 실현 한 LinkedBinary Tree 를 테스트 하고 테스트 코드 를 제출 하여 캡 처 를 실행 합 니 다. 전체 화면 에 자신의 학 번 정 보 를 포함 해 야 합 니 다.
    수업 시간 에 코드 를 코드 위탁 관리 플랫폼 으로 보 냅 니 다.
  • 2. LinkedBinary Tree 를 바탕 으로 (중 서, 선 서) 서열 구 조 를 바탕 으로 유일한 2 * 13658 나무 기능 을 실현 한다. 예 를 들 어 중 서 HDIBEMJNAFCKGL 과 후 서 ABDHIEJMNCFGKL 을 제시 하고 부도 중의 나무
  • 를 구성한다.
    JUnit 또는 자체 드라이버 로 자신 이 실현 한 기능 을 테스트 하고 테스트 코드 를 제출 하여 캡 처 를 실행 합 니 다. 전체 화면 에 자신의 학 번 정 보 를 포함 해 야 합 니 다.
    수업 시간 에 코드 를 코드 위탁 관리 플랫폼 으로 보 냅 니 다.
  • 스스로 결정 트 리 를 설계 하고 실현 한다

  • 테스트 코드 실행 캡 처 제출, 전체 화면, 자신의 학 번 정보 포함
    수업 시간 에 코드 를 코드 위탁 관리 플랫폼 으로 보 냅 니 다.
  • 4. 접미사 표현 식 을 입력 하고 트 리 를 사용 하여 접미사 표현 식 을 접미사 표현 식 으로 변환 하고 접미사 표현 식 과 계산 결 과 를 출력 합 니 다 (트 리 가 없 으 면 정상적으로 평 점 합 니 다. 트 리 를 사용 하면 작은 문제 가 있어 도 만점 을 줍 니 다)
  • 테스트 코드 실행 캡 처 제출, 전체 화면, 자신의 학 번 정보 포함
    2. 실험 과정 과 결과
  • 실험 1:
    import java.util.Iterator;
      public class LinkedBinaryTreeTest {
      public static void main(String[] args) {
      LinkedBinaryTree linkedBinaryTree2 = new LinkedBinaryTree(20);
      LinkedBinaryTree linkedBinaryTree6 = new LinkedBinaryTree();
      LinkedBinaryTree linkedBinaryTree1 = new LinkedBinaryTree(18, linkedBinaryTree6, linkedBinaryTree2);
    
      LinkedBinaryTree linkedBinaryTree4 = new LinkedBinaryTree(23);
      LinkedBinaryTree linkedBinaryTree5 = new LinkedBinaryTree(27);
      LinkedBinaryTree linkedBinaryTree3 = new LinkedBinaryTree(152, linkedBinaryTree5, linkedBinaryTree4);
    
      LinkedBinaryTree linkedBinaryTree = new LinkedBinaryTree(460, linkedBinaryTree1, linkedBinaryTree3);
    
      Iterator preTree = linkedBinaryTree.iteratorPreOrder();
      Iterator postTree = linkedBinaryTree.iteratorPostOrder();
    
    
      System.out.println("   ");
      System.out.println(linkedBinaryTree.toString());
      System.out.println("        " + linkedBinaryTree.getRight());
      System.out.println(("       " + linkedBinaryTree.getLeft()));
      System.out.println(("      " + linkedBinaryTree.getHeight()));
      System.out.println("      460: " + linkedBinaryTree.contains(460));
      System.out.println("    ");
      linkedBinaryTree.toPreString();
    
      System.out.println("
    "); linkedBinaryTree.toPostString();
    }
  • 실험 2:
      public class RunInferenceTree {
      public static void main(String[] args) {
      InferenceTree preIn = new InferenceTree();
      LinkedBinaryTree linkedBinaryTree = preIn.generate0("ABDHIEJMNCFGKL","HDIBEMJNAFCKGL");
      System.out.println("      :");
      System.out.println(linkedBinaryTree.toString());
    }
  • 실험 3: import java. io. FileNotFoundException;public class RunDecisionTree {public static void main (String [] args) throws FileNotFoundException {System. out. println ("작은 테스트 를 하 게 해 주세요"); DecisionTree expert = new DecisionTree ("C:\\Users\12441\\Desktop\game\\input. txt"); expert. evaluate (); System. out. println ("의사 결정 트 리 인쇄 는 다음 과 같 습 니 다:"); System. out. println (expert. getTree ();}
  • 실험 4: import java. util. Scanner; import java. util. Stack; public class infixToSuffix {/접미사 표현 식 을 입력 하고 트 리 를 사용 하여 접미사 표현 식 을 접미사 표현 식 으로 변환 합 니 다. private Stack treeExpression;//연산 자 스 택 private Stack ope;//연산 자 스 택 public infixToSuffix () {treeExpression = new Stack (); ope = new Stack ();}private ExpressionTree getOperand (Stack treeExpression) {ExpressionTree temp; temp = treeExpression. pop (); return temp;} public ExpressionTree getPostfixtTree (String expression) {/이 진 트 리 ExpressionTree operand 1, operand 2; char operator; String tempToken; Scanner parser = new Scanner (expression); while (parser. hasNext ()){tempToken = parser. next (); operator = tempToken. charat (0); if (operator = = '+') | | (operator = '-') | (operator = ') | | (operator =') | (operator = = '/')) {if (ope. empty () ope. push (tempToken);/기 호 를 저장 하 는 스 택 이 비어 있 을 때 바로 스 택 else {String a = ope. peek () + ";//String 형 으로 전 환 된 데 이 터 는 equals 방법 으로 판단 할 수 있 습 니 다. 그렇지 않 으 면 영원히 false if (((a. equals ("+") | (a. equals ("-") & (operator = ') | (operator ='/') ope. push (tempToken);//얻 은 기호의 우선 순위 가 스 택 상단 요소 보다 클 때 스 택 else {String s = String. value Of (ope. pop (); char temp = s. charat (0); operand 1 = getOperand (treeExpression), operand 2 = getOperand (treeExpression), treeExpression. push (new ExpressionTree (1, temp, 0), operand 2, operand 1), ope. push (operator),}//얻 은 기호의 우선 순위 가 스 택 상단 요소 나 우선 순위 보다 작 을 때 디지털 스 택 에서 두 개의 연산 수가 나 와 새로운 트 리 스 택 을 형성 합 니 다} else treeExpression.push(new ExpressionTree(new ExpressionTreeOp (2,' ',Integer.parseInt(tempToken)), null, null)); } while(!ope.empty()){ String a = String.valueOf(ope.pop()); operator = a.charAt(0); operand1 = getOperand(treeExpression); operand2 = getOperand(treeExpression); treeExpression.push(new ExpressionTree (new ExpressionTreeOp(1, operator, 0), operand2, operand1)); } return treeExpression.peek(); } public String getTree() { return (treeExpression.peek()).printTree(); } public int getResult(){ return treeExpression.peek().evaluateTree(); } public void PostOrder() { treeExpression.peek().toPostString(); } public static void main(String[]{String again = ""; Scanner scan= new Scanner (System. in); infixToSuffix list = new inininString again = """;; Scanner scanner scan= new Scanner = new Scanner (System. in); ininfixToSuffix list = new ininininininininfixToSuffix (); do {System. out. println("접두사 표현 식 을 입력 하 십시오: "+"eg. (3 + 4 * 5) "); String exp = new inininininfixToToSuffix ()); 문자열 exp = scan. nextLine. nextLine (); list. getPostPostfix Tree. out. printtl(System. out. print(list. get. print(list. getTree)); System. out.).; System. out. println ("계산 결 과 는:"), System. out. println (list. getResult (), System. out. println ("계속 하 시 겠 습 니까?"), again = scan. nextLine (),} while (again. equalsIgnoreCase ("y"),} 3. 실험 과정 에서 발생 한 문제 와 해결 과정
  • 문제 1: 대기 열 헤더 의 데 이 터 를 호출 할 때 빈 포인터 오류 가 발생 했 습 니 다
  • 문제 해결 방법: 드라이버 코드 를 다시 편집 하고 호출 이 초기 화 되 었 는 지 확인 합 니 다.
  • 문제 2: 실험 3 을 할 때 인쇄 하 는 과정 은 모두 0 이 고 과거 테스트 2 로 돌아 가 실험 2 도 오류 가 발생 한 것 을 발견 했다.
  • 문제 2 해결 방법: 단일 디 버 깅 을 통 해 텍스트 파일 에서 오류 가 발생 한 것 을 발 견 했 습 니 다. 첫 번 째 문 자 는 빈 칸 으로 설정 되 어 문자 캡 처 에 문제 가 생 겼 습 니 다. 앞으로 코드 실천 에서 모든 문자 의 존재 의 미 를 진지 하 게 고려 해 야 한 다 는 것 을 알려 주 었 습 니 다.
  • 문제 3: assert Equals 에 횡선 이 나 타 났 습 니까?
  • 문제 세 가지 해결 방법: 앞에서 정 의 된 실제 부분 과 허 부 는 모두 double 형 입 니 다. 인터넷 에서 찾 아 보 니 assert Equals 는 int 형, long 형 또는 boolean 형 만 지원 하 는 것 을 발 견 했 습 니 다. 아무튼 이때 (double, double) 형 을 지원 하지 않 으 면 어떻게 해 야 할 지 생각 했 습 니 다. 그 러 다가 지원 (string, string) 형 을 발 견 했 습 니 다. 그러면 숫자 를 더 하 겠 습 니 다. "문자열 이 되 어 다음 방법 에 toString 방법 을 추가 하여 문자열 로 바 꾸 면 assertEquals 의 횡선 이 사라 집 니 다.
  • 기타 (깨 달 음, 사고 등)
    어떤 나무 든 이름 은 링크 드 비 나 리 트 리 입 니 다. 트 리 를 만 드 는 데 목적 을 달성 하 는 것 은 현재 프로 그래 밍 의 주류 가 되 었 습 니 다. 비록 제 가 완전히 파악 할 수 없 지만 배 울 수 있 는 것 은 좋 은 것 입 니 다.

    좋은 웹페이지 즐겨찾기