<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      打印tree數據結構

        使用遞歸實現,每次打印子節點前,都要把前面的“|”和空格打印出來,代碼如下:

      方法一:

      #include "stdlib.h"
      #include "stdio.h"
      #include "string.h"
      
      typedef struct Node {
          char *name;
          int num;                  // 子節點數量
          struct Node **children;   // 子節點
      } NodeT;
      
      void PrintTree(char *gap, NodeT *node)
      {
          printf("%s\r\n", node->name);
          if (node->children == NULL) {
              return;
          }
          char *newGap = malloc(strlen(gap) + strlen("     "));
          for (int i = node->num - 1; i >= 0; i--) {
              printf("%s", gap);
              if (i == 0) {
                  printf("└——— ");
                  sprintf(newGap, "%s     ", gap);
              } else {
                  printf("├─── ");
                  sprintf(newGap, "%s│    ", gap);
              }
              PrintTree(newGap, node->children[i]);
          }
      free(newGap); }
      int main(void) { NodeT *node11 = malloc(sizeof(NodeT)); node11->name = malloc(sizeof('l') * 2); memset(node11->name, '\0', sizeof('l') * 2); node11->name[0] = 'l'; node11->name[1] = '\0'; node11->num = 0; node11->children = NULL; NodeT** children6 = malloc(sizeof(NodeT*)); memset(children6, '\0', sizeof(NodeT*)); children6[0] = node11; NodeT *node10 = malloc(sizeof(NodeT)); node10->name = malloc(sizeof('k') * 2); memset(node10->name, '\0', sizeof('k') * 2); node10->name[0] = 'k'; node10->name[1] = '\0'; node10->num = 1; node10->children = children6; NodeT *node9 = malloc(sizeof(NodeT)); node9->name = malloc(sizeof('j') * 2); memset(node9->name, '\0', sizeof('j') * 2); node9->name[0] = 'j'; node9->name[1] = '\0'; node9->num = 0; node9->children = NULL; NodeT **children5 = malloc(sizeof(NodeT*) * 2); memset(children5, '\0', sizeof(NodeT*) * 2); children5[0] = node9; children5[1] = node10; NodeT *node8 = malloc(sizeof(NodeT)); node8->name = malloc(sizeof('i')); memset(node8->name, '\0', sizeof('i')); node8->name[0] = 'i'; node8->num = 0; node8->children = NULL; NodeT **children4 = malloc(sizeof(NodeT *) * 1); memset(children4, '\0', sizeof(NodeT *)); children4[0] = node8; NodeT *node7 = malloc(sizeof(NodeT)); node7->name = malloc(sizeof('h')); memset(node7->name, '\0', sizeof('h')); node7->name[0] = 'h'; node7->num = 0; node7->children = NULL; NodeT *node6 = malloc(sizeof(NodeT)); node6->name = malloc(sizeof('g')); memset(node6->name, '\0', sizeof('g')); node6->name[0] = 'g'; node6->num = 0; node6->children = NULL; NodeT **children3 = malloc(sizeof(NodeT *) * 2); memset(children3, '\0', sizeof(NodeT *)); children3[0] = node6; children3[1] = node7; NodeT *node5 = malloc(sizeof(NodeT)); node5->name = malloc(sizeof('f')); memset(node5->name, '\0', sizeof('f')); node5->name[0] = 'f'; node5->num = 0; node5->children = NULL; NodeT *node4 = malloc(sizeof(NodeT)); node4->name = malloc(sizeof('e')); memset(node4->name, '\0', sizeof('e')); node4->name[0] = 'e'; node4->num = 1; node4->children = children4; NodeT *node3 = malloc(sizeof(NodeT)); node3->name = malloc(sizeof('d')); memset(node3->name, '\0', sizeof('d')); node3->name[0] = 'd'; node3->num = 2; node3->children = children5; NodeT **children2 = malloc(sizeof(NodeT *) * 3); memset(children2, '\0', sizeof(NodeT *)); children2[0] = node3; children2[1] = node4; children2[2] = node5; NodeT *node1 = malloc(sizeof(NodeT)); node1->name = malloc(sizeof('b')); memset(node1->name, '\0', sizeof('b')); node1->name[0] = 'b'; node1->num = 2; node1->children = children3; NodeT *node2 = malloc(sizeof(NodeT)); node2->name = malloc(sizeof('c')); memset(node2->name, '\0', sizeof('c')); node2->name[0] = 'c'; node2->num = 3; node2->children = children2; NodeT **children1 = malloc(sizeof(NodeT *) * 2); memset(children1, '\0', sizeof(NodeT *)); children1[0] = node1; children1[1] = node2; NodeT *node = malloc(sizeof(NodeT)); node->name = malloc(sizeof('a')*2); memset(node->name, '\0', sizeof('a')*2); node->name[0] = 'a'; node->name[1] = '\0'; node->num = 2; node->children = children1; char *gap = malloc(sizeof('\0')); memset(gap, '\0', sizeof('\0')); PrintTree(gap, node); return 0; }

      打印多行:

      void PrintTree(char *gap, NodeT *node)
      {
          printf("%s\r\n", node->name);
          printf("%s", gap);
          if (node->children == NULL) {
              printf("   =======\n");
              return;
          }
          printf("│  =======\n");
          char *newGap = malloc(strlen(gap) + strlen("     "));
          for (int i = node->num - 1; i >= 0; i--) {
              printf("%s", gap);
              if (i == 0) {
                  sprintf(newGap, "%s     ", gap);
                  printf("└——— ");
              } else {
                  sprintf(newGap, "%s│    ", gap);
                  printf("├─── ");
              }
              PrintTree(newGap, node->children[i]);
          }
          free(newGap);
      }

       

       還有一種打印格式:

      方法一:

      void PrintTree(char *gap, NodeT *node)
      {
          printf("%s\r\n", node->name);
          printf("%s  ", gap);
          printf("*******\n");
          if (node->children == NULL) {
              return;
          }
          char *newGap = malloc(strlen(gap) + strlen("     "));
          for (int i = node->num - 1; i >= 0; i--) {
              printf("%s  ->  ", gap);
              sprintf(newGap, "%s      ", gap);
              PrintTree(newGap, node->children[i]);
          }
          free(newGap);
      }

       方法二:

      void PrintTree(int level, NodeT *node)
      {
          printf("%s\r\n", node->name);
          for (int i=0;i<2+level*6;i++){
             printf(" ");
          }
          printf("*******\n");
          if (node->children == NULL) {
              return;
          }
          for (int i = node->num - 1; i >= 0; i--) {
              for (int j=0;j<2+level*6;j++){
                printf(" ");
              }
              printf("->  ");
              PrintTree(level+1, node->children[i]);
          }
      }

       

      posted @ 2022-05-28 15:10  jason_t  閱讀(162)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 无遮无挡爽爽免费视频| 好吊视频一区二区三区| 国产三级精品三级| 南召县| 国产一区二区三区不卡自拍| 婷婷丁香五月激情综合| 开心久久综合激情五月天| 国产一区二区三区在线观看免费 | 9999国产精品欧美久久久久久 | 国产影片AV级毛片特别刺激| 永吉县| 国产中文99视频在线观看| 国产亚洲午夜高清国产拍精品| 四虎永久精品免费视频| 国产一区二区三区精品片| 国内不卡的一区二区三区| 天堂V亚洲国产V第一次| 最新中文字幕av无码专区不| 国产亚洲无日韩乱码| 人人澡人摸人人添| 亚洲av无码乱码在线观看野外| 97国产成人无码精品久久久| 国产乱子伦视频在线播放 | 久久青青草原精品国产app| av天堂亚洲天堂亚洲天堂| 精品无码中文视频在线观看| 国产精品不卡一区二区久久| 老师扒下内裤让我爽了一夜| 91中文字幕一区二区| 沧州市| 亚洲精品国产综合久久一线| 亚洲色大成网站WWW永久麻豆| 久久天天躁狠狠躁夜夜躁2o2o| 国产一区二区黄色激情片| 亚洲色欲色欲www在线看| 日韩国产成人精品视频| 日韩av一区二区三区在线| 成人国产精品中文字幕| 国产尤物AV尤物在线看| 国产成人欧美一区二区三区| 在线观看中文字幕国产码|