同学录 — 二叉树实现

实现功能 添加 查找 删除 修改 显示

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define S 20
#define LEN sizeof(CLASS)

typedef struct cl
{
    int classnum;
    char name[S];
    char birth[S];
    char phone[S];
    struct cl *left,*right;
}CLASS;

CLASS *C;

void init_class()
{
    C = NULL;
}

CLASS *add_class(int num,char n[],char b[],char p[],CLASS *A)       // 添加同学
{
    if(A == NULL)                                                  //判断根结点是否有人 没有则插入信息
    {
        A = (CLASS *)malloc(LEN);
        A->classnum = num;
strcpy(A->name,n);
strcpy(A->birth,b);
strcpy(A->phone,p);
        A->left = NULL;
A->right = NULL;
    }
    else
    {
        if(num < A->classnum)                           //插入的学号比 A 节点上的学号小 则插入到A节点的左孩子上
        {
            A->left = add_class(num,n,b,p,A->left);
        }
        else if(num > A->classnum)                  // 大  插入到右孩子
        {
            A->right = add_class(num,n,b,p,A->right);
        }
        else if(num = A->classnum)                // 相等时 说明已存在 插入失败
        {
            printf("添加失敗!学号为%d的同学已经存在,该同学是%s\n",num,A->name);
            
}
    }
    return A;
}

void ShowTree_f(CLASS* T)   //前序遍历
    if (T != NULL) 
    { 
        printf("\t%d\t", T->classnum); 
        printf("%s\t", T->name); 
        printf("%s\t", T->birth); 
        printf("%s\n", T->phone); 
        ShowTree_f(T->left); 
ShowTree_f(T->right); 
    }
}
void ShowTree_m(CLASS* T)    // 中序遍历
    if (T != NULL) 
    { 
        ShowTree_m(T->left); 
        printf("\t%d\t", T->classnum); 
        printf("%s\t", T->name); 
        printf("%s\t", T->birth); 
        printf("%s\n", T->phone); 
ShowTree_m(T->right); 
    }
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值