二叉排序树

一个关于化妆品价格的二叉排序树,中间有一部分自己不会敲,借鉴的其他博主的一些思想。
希望大家还是主要看思想,具体细节如有更好的建议欢迎留言,本人小白一枚,希望得到大家的批评

/*
李书豪
2017.11.25
要求:建立一个由多种化妆品品牌价格组成的二叉排序树,并按照价格从低到高的顺序打印输出。
*/
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct odds
{
    struct odds *lchild,*rchild;
    int data;
}*odds,odd;

void insert(odds od,int data)  //插入操作
{
    odds p,s,parent;
    p=od;
    while(p);
    {
        if(data<p->data);
        {
            parent=p;
            p=p->lchild;
        } 
        else if(data>p->data)
        {
            parent=p;
            p=p->rchild;
        }
        else 
        {
            return ;
        }
    }
    s=(odds)malloc(sizeof(odd));
    s->data=data;
    s->lchild=s->rchild=NULL;
    if(s->data<parent->data)
        parent->lchild=s;
    else
        parent->rchild=s;
}
odds initodd(odds od,int n)  //插入法赋值
{
    int data;
    printf("请输入第一个化妆品价格!\n");
    scanf("%d",&data);
    od=(odds)malloc(sizeof(odd));
    od->data=data;
    od->lchild=od->rchild=NULL;
    printf("请输入剩余化妆品的价格:\n");
    for(int i=1;i<n;i++)
    {
        scanf("%d",&data);
        insert(od,data);
    }
}

void inorder(odds od)   //中序遍历
{
    if(!od)
        return ;
    inorder(od->lchild);
    printf("化妆品的价格为%d",od->data);
    inorder(od->rchild);
}

int find(odds od,int key) //查找化妆品的价格;
{
    odds p;
    p=od;
    while(p)
    {
        if(key<p->data)
            p=p->lchild;
        else if(key>p->data)
            p=p->rchild;
        else
        {
            printf("%d的化妆品查找成功!\n",key);
            return 1;
        }
    }
    printf("未找到数据%d。\n",key);
    return 0;
}

void del(odds od,int key)
{
    odds p,cur,par;
    p=od;
    while(p)
    {
        if(key==p->data)
            break;
        else if(key<p->data)
        {
            par=p;
            p=p->lchild;
        }
        else
        {
            par=p;
            p=p->rchild;
        }
    }
    if(!p)
    {
        printf("该二叉树为空!\n");
        return ;
    }
    if(!p->lchild)     //没有左子树
    {
        if(p==od)
            od=p->rchild;
        else if(par->lchild==p)
            par->lchild=p->rchild;
        else
            par->rchild=p->lchild;
        free(p);
    }

}
void main()
{
    int n,key,select;
    odds od;
    while(1)
    {
        printf("-----------------\n");
        printf("1、建立一个化妆品价格的二叉排序树\n");
        printf("2、输出中序遍历结果\n");
        printf("3、查找数据是否存在\n");
        printf("4、删除数据\n");
        printf("5、插入数据\n");
        printf("6、退出\n");
        printf("------------------\n");
        printf("请输入你想要进行的操作:\n");
        scanf("%d",&select);
        switch(select)
        {
        case 1:
               printf("请输入一共有多少个化妆品:\n");
               scanf("%d",&n);
               initodd(od,n);
               break;
        case 2:
               printf("中序遍历的结果为:\n");
               inorder(od);
               printf("\n");
               break;
        case 3:
               printf("请输入要查找的关键字:\n");
               scanf("%d",&key);
               find(od,key);
               break;
        case 4:
               printf("请输入要删除的关键字:\n");
               scanf("%d",&key);
               del(od,key);
        case 5:
               printf("请输入要插入的数据:\n");
               scanf("%d",&key);
               insert(od,key);
               printf("插入成功!\n");
               break;
        default:
               return 0;

        }
    }
}
设计一个化妆品销售管理信息系统,该系统的用户由普通用户和管理员组成,不同的用户拥有不同的权限,各自完成各自的管理功能。首先是欢迎界面,然后选择登录,登录的时候首先要判断用户的身份,合法的用户然后进入到系统主界面中,不同的用户看到不同的系统功能。用sql server2000创建后台数据库,然后利用程序设计语言(VB)编写程序实现对数据库的操作,按照要求完成所有的功能和模块。 2、化妆品销售管理信息系统主要功能 (1)用户管理:用户登陆界面、新用户注册界面、用户本人信息查看界面、用户本人信息修改界面、化妆品查看界面、化妆品选购界面、员工信息查看界面、用户秘密修改界面。 (2)管理员管理:管理员登陆界面、用户管理界面(增、查、删)、销售管理界面(增、查、删)、化妆品管理界面(增、查、删)、员工信息管理界面(增、查、删)、管理员密码修改界面。 3、化妆品销售管理信息系统数据库表单(表单和字段可以按照需求增、删、改) (1)用户信息表单:用户名、密码、用户类型(管理员和普通用户)。 (2)商品信息表单:商品编号、商品名称、价格、规格、供应商、生产日期、生产厂家。 (3)客户信息表单:客户编号、姓名、地址、联系电话、银行账号、开户银行。 (4)供应商信息表单:供应商编号、供应商名称、地址、联系电话、负责人、银行账号。 (5)员工信息表单:员工编号、姓名、年龄、性别、身份证号、部门、联系电话、地址、学历。 (6)进货信息表单:进货单编号、供应商编号、员工编号、进货日期、产品编号、数量、总金额。 (7)库存信息表单:产品编号、库存编号、数量。 (8)销售信息表单:销售编号、销售日期、客户编号、员工编号、产品编号、数量、总金额。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li_jeremy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值