4.19课程作业-吴佳旎

链式队列的代码

创建

node_p create_que()
{
    node_p H = (node_p)malloc(sizeof(node));//申请空间
    if(H==NULL)//判定条件
    {
        printf("空间申请失败\n");  
        return NULL;  
    }
    /给data数组和front,rear初始化
    bzero (H->data,sizeof(H->data)); // 使用bzero 给数组空间清零
    H->front = 3; //front和 rear不需要从0开始,但是队列为空时,front和rear要相等
    H->raer = H->front;
    return H;
}

判空

int empty_que(que_p H)
{
    if(H==NULL)
    {
        printf("入参为空\n");
        return -1;    
    }
    return H->front==H->rear?1:0;
}

入队

void push_que(que_p H,datatype data)
{
    if(H==NULL)
    {
        printf("入参为空\n");
        return ;    
    }     
    if(full_que(H))
    {
        printf("队列已满\n");
        return;    
    }
    
}

出队

oid pop_que(que_p H)
{
    if(H==NULL)
    {
        printf("入参为空\n");
        return ;    
    }     
    if(full_que(H))
    {
        printf("队列已满\n");
        return;    
    }
}

输出队列

void show_que(que_p H)
{
    if(H==NULL)
    {
        printf("入参为空\n");
        return ;    
    }     
    if(empty_que(H))
    {
        printf("队列已满\n");
        return;    
    }
}

释放队列

void free(que_p H)
{
    if(H==NULL||*H==NULL)
    {
        printf("入参为空\n");
        return ;    
    } 
    free(*H);
    *H=NULL;    
}

二叉树中序遍历+后续遍历的代码

中序遍历

void pri_inorder(node_p T)
{
    if(T==NULL)
    {
        return;    
    }
    pri_inorder(T->lchild);//先遍历左子树
    printf("%d",T->data); //在访问根节点
    pri_inorder(T->rchild); //最后遍历右子树
}

后续遍历

void pri_follow-up(node_p T)
{
    if(T==NULL)
    {
        return;    
    }
    pri_follow-up(T->lchild);//先遍历左子树
    pri_follow-up(T->rchild); //再遍历右子树
    printf("%d",T->data); //最后访问根节点
}

复习递归

递归:函数自身的调用,把大问题分解成多个独立的子问题进行解决的一种方式,本质是循环

直接递归: 一个函数的自身调用

死递归:类似于死循环

间接递归:多个函数之间的相互调用

画二叉树:先序遍历:FCADBEHGM

                  中序遍历:ACBDFHEMG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yoyozi_wu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值