EldiraSesto

Baum

Dec 1st, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct node_s
  6. {
  7. char songtitle [256] , interpreter [256];
  8. struct node_s *parent , *left , * right ;
  9. } node_t ;
  10.  
  11. node_t * create_node (char songtitle [], char interpreter []){
  12. node_t *node = malloc(sizeof(node_t));
  13. strcpy(node->interpreter, interpreter);
  14. strcpy(node->songtitle, songtitle);
  15. node->parent = 0;
  16. node->left = 0;
  17. node ->right = 0;
  18.  
  19. return node;
  20. }
  21.  
  22. node_t * insert_node ( node_t * rootnode , char songtitle [], char interpreter []){
  23. if(rootnode){
  24.     if(strcmp(rootnode->songtitle, songtitle)<0){
  25.         if(rootnode->left){
  26.             insert_node(rootnode->left, songtitle, interpreter);
  27.         }
  28.         else{
  29.             rootnode->left = create_node(songtitle, interpreter);
  30.             rootnode->left->parent = rootnode;
  31.         }
  32.     }
  33.     else{
  34.         if(rootnode->right){
  35.             rootnode->right=insert_node(rootnode->right, songtitle, interpreter);
  36.         }
  37.         else{
  38.             rootnode->right=create_node(songtitle, interpreter);
  39.             rootnode->right->parent = rootnode;
  40.         }
  41.     }
  42. }else{
  43. rootnode=create_node(songtitle, interpreter);
  44. }
  45.  
  46. return rootnode;
  47. }
  48.  
  49. void print2(node_t *node, long level){
  50. long i;
  51. if (node->left) print2(node->left, level + 1);
  52. for (i = 0; i < level; ++i) printf("  "); /* fuegt " " level mal ein */
  53. printf("%s - %s\n", node->interpreter, node->songtitle); /* gibt das Element aus */
  54. if (node->right) print2(node->right, level + 1);
  55. }
  56.  
  57. void print ( node_t * node ){
  58. print2(node, 0);
  59. }
  60.  
  61. void destroy_nodes ( node_t * node ){
  62. if (node->left)
  63. destroy_nodes(node->left);
  64. if (node->right)
  65. destroy_nodes(node->right);
  66. free(node);
  67. }
  68.  
  69. node_t * search_node ( node_t * rootnode , char songtitle []){
  70. node_t *pronadjeno = 0;
  71.  
  72. if(strcmp(rootnode->songtitle, songtitle)==0){
  73.     pronadjeno= rootnode;
  74.     return pronadjeno;
  75. }
  76.  
  77. if((strcmp(songtitle, rootnode->songtitle)<0) && rootnode->left!=0){
  78.     return search_node(rootnode->left, songtitle);
  79. }
  80. else{
  81.     if(rootnode->right!=0){
  82.         return search_node(rootnode->right, songtitle);
  83.     }
  84.     else{
  85.         printf("Nicht gefunden...");
  86.         return 0;
  87.     }
  88. }
  89. }
  90.  
  91. long count_nodes(node_t *rootnode)
  92. {
  93.     long k=0;
  94.  
  95.     if(rootnode)
  96.     {
  97.         k++;
  98.         if(rootnode->left)
  99.         {
  100.             k=k+count_nodes(rootnode->left);
  101.         }
  102.         if(rootnode->right)
  103.             k=k+count_nodes(rootnode->right);
  104.  
  105.     }
  106.     return k;
  107. }
  108.  
  109. long jelIsti (node_t *node,char interpreter []){
  110. if(strcmp(node->interpreter, interpreter) ==0){
  111.     return 1;
  112. }
  113. return 0;
  114. }
  115.  
  116. long count_nodes_with_interpreter ( node_t * rootnode , char interpreter []){
  117. long brojac = 0;
  118. if(rootnode){
  119.     brojac=brojac+jelIsti(rootnode, interpreter);
  120. if(rootnode->left)
  121.     brojac=brojac+count_nodes_with_interpreter(rootnode->left, interpreter);
  122. if(rootnode->right)
  123.     brojac=brojac+count_nodes_with_interpreter(rootnode->right, interpreter);
  124. }
  125. return brojac;
  126. }
  127.  
  128.  
  129. int main()
  130. {
  131.     printf("Hello world!\n");
  132.     node_t *node = 0;
  133.     node_t *trazeni = 0;
  134.     double broj = 0;
  135.     node=create_node("eldira", "sesto");
  136.     insert_node(node, "azra", "korjenic");
  137.     insert_node(node, "dzana", "kurtalic");
  138.     print(node);
  139.     trazeni = search_node(node, "eldira");
  140.     print(trazeni);
  141.     broj = count_nodes(trazeni);
  142.     printf("\nBroj nodova je: %ld", broj);
  143.  
  144.     return 0;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment