Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct node_s
- {
- char songtitle [256] , interpreter [256];
- struct node_s *parent , *left , * right ;
- } node_t ;
- node_t * create_node (char songtitle [], char interpreter []){
- node_t *node = malloc(sizeof(node_t));
- strcpy(node->interpreter, interpreter);
- strcpy(node->songtitle, songtitle);
- node->parent = 0;
- node->left = 0;
- node ->right = 0;
- return node;
- }
- node_t * insert_node ( node_t * rootnode , char songtitle [], char interpreter []){
- if(rootnode){
- if(strcmp(rootnode->songtitle, songtitle)<0){
- if(rootnode->left){
- insert_node(rootnode->left, songtitle, interpreter);
- }
- else{
- rootnode->left = create_node(songtitle, interpreter);
- rootnode->left->parent = rootnode;
- }
- }
- else{
- if(rootnode->right){
- rootnode->right=insert_node(rootnode->right, songtitle, interpreter);
- }
- else{
- rootnode->right=create_node(songtitle, interpreter);
- rootnode->right->parent = rootnode;
- }
- }
- }else{
- rootnode=create_node(songtitle, interpreter);
- }
- return rootnode;
- }
- void print2(node_t *node, long level){
- long i;
- if (node->left) print2(node->left, level + 1);
- for (i = 0; i < level; ++i) printf(" "); /* fuegt " " level mal ein */
- printf("%s - %s\n", node->interpreter, node->songtitle); /* gibt das Element aus */
- if (node->right) print2(node->right, level + 1);
- }
- void print ( node_t * node ){
- print2(node, 0);
- }
- void destroy_nodes ( node_t * node ){
- if (node->left)
- destroy_nodes(node->left);
- if (node->right)
- destroy_nodes(node->right);
- free(node);
- }
- node_t * search_node ( node_t * rootnode , char songtitle []){
- node_t *pronadjeno = 0;
- if(strcmp(rootnode->songtitle, songtitle)==0){
- pronadjeno= rootnode;
- return pronadjeno;
- }
- if((strcmp(songtitle, rootnode->songtitle)<0) && rootnode->left!=0){
- return search_node(rootnode->left, songtitle);
- }
- else{
- if(rootnode->right!=0){
- return search_node(rootnode->right, songtitle);
- }
- else{
- printf("Nicht gefunden...");
- return 0;
- }
- }
- }
- long count_nodes(node_t *rootnode)
- {
- long k=0;
- if(rootnode)
- {
- k++;
- if(rootnode->left)
- {
- k=k+count_nodes(rootnode->left);
- }
- if(rootnode->right)
- k=k+count_nodes(rootnode->right);
- }
- return k;
- }
- long jelIsti (node_t *node,char interpreter []){
- if(strcmp(node->interpreter, interpreter) ==0){
- return 1;
- }
- return 0;
- }
- long count_nodes_with_interpreter ( node_t * rootnode , char interpreter []){
- long brojac = 0;
- if(rootnode){
- brojac=brojac+jelIsti(rootnode, interpreter);
- if(rootnode->left)
- brojac=brojac+count_nodes_with_interpreter(rootnode->left, interpreter);
- if(rootnode->right)
- brojac=brojac+count_nodes_with_interpreter(rootnode->right, interpreter);
- }
- return brojac;
- }
- int main()
- {
- printf("Hello world!\n");
- node_t *node = 0;
- node_t *trazeni = 0;
- double broj = 0;
- node=create_node("eldira", "sesto");
- insert_node(node, "azra", "korjenic");
- insert_node(node, "dzana", "kurtalic");
- print(node);
- trazeni = search_node(node, "eldira");
- print(trazeni);
- broj = count_nodes(trazeni);
- printf("\nBroj nodova je: %ld", broj);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment