バイナリツリートラバーサル順序モジュールを使用すると、生徒の成績(バイナリソートツリー)を達成するために設計されています

出典:

書式#include <stdio.hに>
する#include <stdlib.h>に含ま

typedefは構造体TNODE
{
  int型のID。
  int型のスコア。
  構造体TNODE * lchild、* rchild。
} STU。

ボイドins_student(STU ** P、長いID、INTスコア)
{
  STU * S。
  IF(* P == NULL)
  {
    S =(STU *)はmalloc(はsizeof(STU))。//插入学生信息
    S-> ID = ID。
    S->スコア=スコア。
    S-> lchild = NULL;
    S-> rchild = NULL;
    * P = sで、
  }
  そうであれば(スコア<(* P) - >スコア)
    ins_student(&((* P) - > lchild)、ID、スコア)。
  他
    ins_student(&((* P) - > rchild)、ID、スコア);
}

//バイナリソートツリーを作成

* create_studentのSTU()
{
  上記IDを述べINTは、スコア;
  STUの*ルート、
  ルート= NULL;
  のprintf( "分離し、0端と学生番号とスコア(入力してください)!");
  のprintf(「を\ n ----- -------------------------- \ N- ");
  のprintf("学生番号、結果: ");
  scanf関数(" %のLD、%D "&ID、およびスコア);
  一方(スコア= 0)!
  {
    ins_student(&根、ID、スコア);
    のprintf("学生番号、グレード: ");
    scanfの(" %のLDは、%D」、&ID、およびスコア)。  
  }
  のprintf( "\ nは------------------------------- \ N-");
  ルートを返します;
}

オーダーのボイドin_orderには(STU * BT)//再帰的なバイナリツリートラバーサル
{
  IF(BT = NULL!)
  {
    in_order(BT-> lchild);
    のprintf( "%のLD、%D \ N-"、BT-> ID、BT - >音楽);
    in_order(BT-> rchild);
  }
}

メインのボイド()
{
  STU *ルート、
  ルートcreate_student =();
  のprintf( "ソート結果:\ N-");
  のprintf( "学生番号、グレード:\ N-");
  in_order(ルート);
}

結果:

 

おすすめ

転載: www.cnblogs.com/duanqibo/p/11770060.html