2023-2024第一学期第四周助教总结

发布时间 2023-10-29 22:49:56作者: 学号20221407

第四周助教总结

2023.10.29


本次总结所属课程 2023-2024第一学期计算机基础与程序设计
本次作业要求 作业要求
作业提交情况 提交情况

一、作业提交情况


  • 本次作业提交情况较好,大多数同学都自觉按时提交了作业,仅有部分同学没有提交作业,希望能尽快改正。
  • 本次作业中存在应付作业的情况,仅仅抄写了教材的内容,没有充分的自我思考的过程,没有对于上周学习的反思过程。这样的总结是没有任何意义的,希望各位同学们不要应付作业,既然老师给了大家这样一个任务就请认真完成,总会有用的。

当然,如果这种情况是由于事务过多而导致没有时间完成作业的话,我对此表示非常惋惜。在学校咱们的主业是学习不是做学生工作,请大家分清主次。如果感觉现在事情很多的话,就请尽快推掉一些,不要因此耽误了学业。

  • 我个人认为一个好的总结应该有对于上周内容的自我思考以及反思,大体上有以下几个方面:

如果有较多时间的话,强烈建议对于教材上的内容深入学习一下。比如说学到编码的时候可以查一查都有什么编码,学到TCP/Ip协议的时候可以查一下他们到底是社么东西,学到排序算法的时候可以尝试一下使用C语言实现他们(这个我觉得普通的同学可能确实自己想不出来,但是大家可以上网查一下其他人写的代码)。这样大家会越来越牛的!


二、作业中的优点



三、日常发现的问题


1.部分同学仍旧没有养成自己解决问题的习惯,在写代码的时候总是一出了不能短时间内解决的问题就立刻跑来问学长,我猜测肯定也有问班里能力强的同学的。对于这个问题吧,我们并不是不愿回答,而是有的时候写代码直接问,不管问谁谁都抓瞎。你自己写的代码,别人怎么知道你是怎么想的……看明白的功夫都够再写一遍了。而且有的时候就一张图片,真的什么都看不出来……
好了,吐槽到此结束,这些都不是关键问题,关键问题在于如果总是一出问题就问别人的话最后永远都不会有成长的,有的时候我们出的问题可能是一个小小的格式问题,这样你锻炼了查错能力,有的时候你的问题是出在对于某个关键问题的理解上了,这样如果你查出了错,那就是大大的提升,不可多得的好处,所以大家一点要尽量自己解决问题。

ps:往往那些总问别人自己代码哪里错的同学最后写代码能力都一般……

点击查看代码
/*作者:***
时间2023.5.6.  19:36
功能:实现二叉树的创建、前中后层序遍历、测量深度*/
#include<stdio.h>
#include<stdlib.h>
typedef struct Binnode
{
    char info;
    struct Binnode *left;
    struct Binnode *right;
}*Bintree;
typedef struct Queue
{
    Bintree node;
    struct Queue *next;
}*Qu;//队列
typedef struct Quhead
{
    Qu head;
    Qu tail;
}*Quhd;//队头
Bintree CreateBintree();//根据前序遍历的结果创建二叉树
void PreOrder(Bintree Bt);//前序遍历
void InOrder(Bintree Bt);//中序遍历
void PostOrder(Bintree Bt);//后序遍历
void LevelOrder(Bintree Bt);//层序遍历
void Level(struct Quhead *qhead,Bintree Bt);

void EnQueue(Quhd qu,Bintree node);//入队
Bintree DeQueue(Quhd qu);//出队

int BintreeDepth(Bintree Bt);//测量深度
void Depth(Bintree Bt,int h,int *depth);//另一种测量深度的方法
void Destroy(Bintree Bt);//释放函数

int main()
{
    Bintree tree;//这是二叉树
    int or;//判断是否继续进行
    int h = 1;//用来存放当前所在层次
    int depth = 0;//用来存放当前已知的最大层次
    int result = -1;
    do
    {
        printf("Please input your bin tree in preorder:\n");
        tree = CreateBintree();
        printf("Preorder result:");
        PreOrder(tree);
        printf("\n");

        printf("Inorder result:");
        InOrder(tree);
        printf("\n");

        printf("Postorder result:");
        PostOrder(tree);
        printf("\n");

        printf("Levelorder result:");
        LevelOrder(tree);
        printf("\n");
        result = BintreeDepth(tree);
        printf("The depth of the tree is %d\n",result);
        Depth(tree,h,&depth);
        printf("In another manner ,the depth is %d\n",depth);
        printf("Do you want to go on?\n");
        scanf("%d",&or);
        Destroy(tree);
        if(or)
        {
            getchar();
        }
    }while(or>0);

    return 0;
}
Bintree CreateBintree()
{
    char c;
    Bintree t = NULL;
    c = getchar();
    if(c == ' ')
        return NULL;
    else
    {
        t = (Bintree)malloc(sizeof(struct Binnode));
        if(t == NULL)
        {
            printf("ERROR!");
            exit(0);
        }
        t->info = c;
        t->left = CreateBintree();
        t->right = CreateBintree();
    }
    return t;
}
void PreOrder(Bintree Bt)
{
    if(!Bt)
    {
        return;
    }
    else
    {
        printf("%c",Bt->info);
        PreOrder(Bt->left);
        PreOrder(Bt->right);
    }
}
void InOrder(Bintree Bt)
{
    if(!Bt)
    {
        return;
    }
    else
    {
        InOrder(Bt->left);
        printf("%c",Bt->info);
        InOrder(Bt->right);
    }
}
void PostOrder(Bintree Bt)
{
    if(!Bt)
    {
        return;
    }
    else
    {
        PostOrder(Bt->left);
        PostOrder(Bt->right);
        printf("%c",Bt->info);
    }
}
int BintreeDepth(Bintree Bt)//测量深度
{
    int hL,hR;
    if(!Bt)
        return 0;
    else
    {
        hL = BintreeDepth(Bt->left);
        hR = BintreeDepth(Bt->right);
    }
    if(hL>hR)
    {
        return hL+1;
    }
    else
    {
        return hR+1;
    }
}
void Depth(Bintree Bt,int h,int *depth)
{
    if(!Bt)
    {
        return;
    }
    else
    {
        if(h>*depth)
            *depth = h;
        Depth(Bt->left,h+1,depth);
        Depth(Bt->right,h+1,depth);
    }
}
void LevelOrder(Bintree Bt)//层序遍历
{
    Quhd qhead = (Quhd)malloc(sizeof(struct Quhead));
    if(qhead == NULL)
    {
        printf("ERROR!");
        exit(0);
    }
    qhead->head = NULL;
    qhead->tail = NULL;
    Level(qhead,Bt);
    free(qhead);
}
void Level(Quhd qhead,Bintree Bt)
{
    Bintree t;
    EnQueue(qhead,Bt);
    while(qhead->head != NULL||qhead->tail != NULL)
    {
        t = DeQueue(qhead);
        printf("%c",t->info);
        if(t->left)
            EnQueue(qhead,t->left);
        if(t->right)
            EnQueue(qhead,t->right);
    }
}
void Destroy(Bintree Bt)
{
    if(Bt->left)
    {
        Destroy(Bt->left);
    }
    else if(Bt->right)
    {
        Destroy(Bt->right);
    }
    free(Bt);
    return;
}
void EnQueue(Quhd qu,Bintree node)//入队
{
    Qu t = NULL;
    t = (Qu)malloc(sizeof(struct Queue));
    if(t == NULL)
    {
        printf("ERROR!");
        exit(0);
    }
    if(qu->head == NULL&&qu->tail == NULL)
    {
        t->node = node;
        qu->head = qu->tail = t;
        t->next = NULL;
    }
    else
    {
        t->node = node;
        t->next = qu->tail->next;
        qu->tail->next = t;
        qu->tail = t;
    }

}
Bintree DeQueue(Quhd qu)//出队
{
    if(qu->head == NULL&&qu->tail == NULL)
        return NULL;
    Qu t = NULL;
    Bintree k = NULL;
    if(qu->head == qu->tail)
    {
        t = qu->head;
        k = t->node;
        free(t);
        qu->head = qu->tail = NULL;
        return k;
    }
    else
    {
        t = qu->head;
        qu->head = qu->head->next;
        k = t->node;
        free(t);
        return k;
    }


}

这是我们之后实际要写的代码,大概300多行。那时候300多行可没人会帮你一行一行看了帮你找错了。所以大家赶快锻炼自己解决问题的能力吧,自己成为大佬才是最好的方法!

四、学习建议

1.合理分配好学习时间、工作时间、休息时间,不要卡着ddl做事;
2.建议大家提前往下学习C语言,语言的学习应该是最基本的事情,这样你会比其他人会的更多;
3.老师的要求大家要尽量达到,这样才能达到最大的学习效果,不要因为太难就随便应付过去了;


结尾


希望大家都能好好学习计算机基础与程序设计这门课程,从中发现计算机世界的美丽,希望我写的东西能真正地帮到大家。