• 《软件工程》开课总结


    新学期 新起点。

    上个学期学习了C、Java等语言,学习了数据结构、uml,web等课程,会写一些简单的算法程序例如排序、最短路径等

    #include<stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    typedef struct BSTNode{
    
            int data;
    
            struct BSTNode *lchild,*rchild;
    
    }BSTNode,*BSTree;
    BSTree InsertBST(BSTree T,int data);
    BSTree CreatBST(BSTree T);
    bool SearchBST(BSTree T,int key);
    void DeleteBST(BSTree T,int key);
    void PrintBST(BSTree T);
    bool DeleteBST(BSTree *T, int key);
    bool Delete(BSTree *T);
    void homePage();
    void homePage1();
    int main(){
        BSTree T;
        T=NULL;
        int key,key2;
        int num;
        bool n;
        printf("\t\t\t\t\t****************");
        printf("\n\n\t\t\t\t\t1.创建一棵二叉树");
          printf("\n\t\t\t\t\t2.结束本程序");
          printf("\n\n\t\t\t\t\t****************\n");
          printf("请输入操作:");
          scanf("%d",&num);
          switch(num)
          {
          case 1:homePage();printf("请输入数据(输0停止):\n");T=CreatBST(T); printf("中序遍历二叉树:\n");PrintBST(T);printf("\n");break;
          case 2:exit(0);
          }
          for(int i=0;i>=0;i++)
          {
          homePage1();
          printf("请输入操作:");
           scanf("%d",&num);
           switch(num){
               case 1:do
                      {
                      homePage();
                      printf("请输入要查找的数据:\n");
                      scanf("%d",&key);
                      n=SearchBST(T,key);
                      }while(!n);break;
               case 2:homePage();
                      printf("请插入数据:\n");
                      scanf("%d",&key2);
                      InsertBST(T,key2);
                       printf("中序显示:\n");
                      PrintBST(T);
                      break;
              case 3: homePage();
                      printf("请输入要删除的数据:\n");
                      scanf("%d",&key);
                      DeleteBST(&T,key);
                      printf("中序显示:\n");
                      PrintBST(T);
                      printf("\n");break;
              case 4: exit(0);
           }
    
          }
        return 0;
    }
    void homePage()
    {
        static char operateValue;
        system("cls");
    }
    void homePage1()
    {
          printf("\n\t\t\t\t\t********请选择你要对这棵二叉树所做的操作********");
          printf("\n\n\t\t\t\t\t***    1......查找你想要寻找的节点           ***");
          printf("\n\t\t\t\t\t***    2......插入你想要插入的节点           ***");
          printf("\n\t\t\t\t\t***    3......删除你想要删除的节点           ***");
          printf("\n\t\t\t\t\t***    4......结束对这棵二叉树的操作         ***");
          printf("\n\n\t\t\t\t\t************************************************\n");
    
    }
    BSTree InsertBST(BSTree T,int data){
           BSTree s;
           if(!T){
                 s=(BSTNode *)malloc(sizeof(BSTree));
                 s->data=data;
                 s->lchild=NULL;
                 s->rchild=NULL;
                 return s;
           }
           else if(T->data<data){
                 T->rchild=InsertBST(T->rchild,data);
           }
           else if(T->data>data){
                 T->lchild=InsertBST(T->lchild,data);
           }
           return T;
    
    }
    
    BSTree CreatBST(BSTree T){
          int data;
          scanf("%d",&data);
          while(data!=0)
          {
              T=InsertBST(T,data);
              scanf("%d",&data);
          }
          return T;
    }
    
    bool SearchBST(BSTree T,int key){
         if(!T){
            printf("未找到该数据,请重新输入!\n");
            return false;
    
         }
        else if(T->data==key){
    
            printf("成功查找到数据:%d\n",T->data);
            return true;
        }
    
        else if(T->data>key){
          SearchBST(T->lchild,key);
        }
        else if(T->data<key){
          SearchBST(T->rchild,key);
        }
    }
    void PrintBST(BSTree T){
    
             if (!T)
              return;
             PrintBST(T->lchild);
             printf("%d ", T->data);
             PrintBST(T->rchild);
    }
    
    /*
     * 在以*T为根结点的树中,删除与key相同的结点。
     * 如果没有此结点返回FALSE。
     */
    bool DeleteBST(BSTree *T, int key){
        if (!*T)        //空树。查无此结点。
            return false;
        else if (key == (*T)->data)
        {
            Delete(T);
            return true;
        }
        else if (key < (*T)->data)
        {
            return DeleteBST(&((*T)->lchild), key);
        }
        else
        {
            return DeleteBST(&((*T)->rchild), key);
        }
    }
    
    /*
     * 删除*T指向的结点
     */
    bool Delete(BSTree *T)
    {
        BSTree L;
    
        //*T既没有左孩子,又没有右孩子,为叶子结点
        if (!(*T)->lchild && !(*T)->rchild)
            *T = NULL;
        //*T只有右孩子
        else if (!(*T)->lchild)
            *T = (*T)->rchild;
        //*T只有左孩子
        else if (!(*T)->rchild)
            *T = (*T)->lchild;
        //*T既有左孩子,又有右孩子
        else
        {
            L = (*T)->lchild;//L指向被删除结点的左子树
    
            //寻找L的最右孩子
            while (L->rchild)
                L = L->rchild;
            //把*T的右子树接到左子树最右孩子的右子树上。
            L->rchild = (*T)->rchild;
            //*T的左子树直接作为*T父结点的子树
            *T = (*T)->lchild;
        }
        return true;
    }
    二叉树

    在uml课程中,学习了几种图的绘制,对制作软件前的准备流程,以及软件建模有了一定了解;在java web学习中,学习了crud等操作,利用mysql数据库,能够制作一个最基本的系统。

    期望:

    在下学期的学习中,我将学习php语言及C++语言,学习使用matlab工具完成建模,了解数据库原理及计算机网络,更深一步学习web开发、安卓开发等,我希望能够通过本学期的学期,在学期末,具有能完全独立地完成任务的能力,以及在开发过程中学会与团队成员间的配合。

  • 相关阅读:
    对比JAVA、Python、C、Go运行时间,我惊呆了!!!
    python中的“反射”
    leetcode最大子序和(python)
    Leetcode228. 汇总区间
    Leetcode204. 计数质数
    Leetcode867. 转置矩阵
    PAT(Advanced Level)A1051. Pop Sequence
    PAT(Advanced Level)A1098.Insertion or Heap Sort
    uniapp关于scroll-view中scroll-into-view的不生效的问题
    HBuilder X 未检测到手机或模拟器
  • 原文地址:https://www.cnblogs.com/Arisf/p/14468440.html
Copyright © 2020-2023  润新知