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 * newnode = 0;
- newnode = calloc(1, sizeof(node_t));
- strcpy(newnode->songtitle, songtitle);
- strcpy(newnode->interpreter, interpreter);
- newnode->parent=0;
- newnode->left=0;
- newnode->right=0;
- return newnode;
- }
- 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(strcmp(rootnode->songtitle, songtitle)>0){
- if(rootnode->right){
- insert_node(rootnode->right, songtitle, interpreter);
- }
- else{
- rootnode->right = create_node(songtitle, interpreter);
- rootnode->right->parent=rootnode;
- }
- }
- }
- else return create_node(songtitle, interpreter);
- return rootnode;
- }
- void tree_print(node_t *node, long level)
- {
- long i;
- if (node->left) tree_print(node->left, level + 1);
- for (i = 0; i < level; ++i) printf(" "); /* fuegt " " level mal ein */
- fprintf(stdout, "%s %s\n", node->songtitle, node->interpreter); /* gibt das Element aus */
- if (node->right) tree_print(node->right, level + 1);
- }
- void print ( node_t * node ){
- tree_print(node, 1);
- }
- 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 []){
- if(rootnode){
- if(strcmp(rootnode->songtitle, songtitle) ==0){
- return rootnode;
- }
- if(rootnode->left){
- search_node(rootnode->left, songtitle);
- }
- if(rootnode->right){
- search_node(rootnode->right, songtitle);
- }
- }
- printf("Prazan rootnode....");
- return 0;
- }
- long count_nodes ( node_t * rootnode ){
- long anzahl=0;
- if(rootnode){
- anzahl++;
- if(rootnode->left){
- anzahl=anzahl+count_nodes(rootnode->left);
- }
- if(rootnode->right){
- anzahl=anzahl+count_nodes(rootnode->right);
- }
- }
- return anzahl;
- }
- long count_nodes_with_interpreter ( node_t * rootnode , char interpreter []){
- long anzahl = 0;
- if(rootnode){
- if(strcmp(rootnode->interpreter, interpreter)==0){
- anzahl++;
- }
- if(rootnode->left){
- anzahl=anzahl+count_nodes_with_interpreter(rootnode->left, interpreter);
- }
- if(rootnode->right){
- anzahl=anzahl+count_nodes_with_interpreter(rootnode->right, interpreter);
- }
- }
- return anzahl;
- }
- int main()
- {
- int c=0;
- long br=0;
- char interpreter[256], songtitle[256];
- node_t *node=0;
- printf("\nFunktions you can choose: ");
- printf("\n1: Create node ");
- printf("\n2: Insert node ");
- printf("\n3: Destroy nodes ");
- printf("\n4: Print tree ");
- printf("\n5: Count nodes ");
- printf("\n6: Count nodes wth inter ");
- printf("\n7: Search node ");
- printf("\n0: END ");
- do{
- printf("\nIzaberite funkciju koju zelite: ");
- scanf("%d", &c);
- switch(c){
- case 1: printf("\nUnesite songtitle: ");
- scanf("%s", songtitle);
- printf("\nUnesite interpreter: ");
- scanf("%s", interpreter);
- node = create_node(songtitle, interpreter);
- if(node!=0) printf("\nUspjesno kreiran node");
- break;
- case 2: printf("\nUnesite songtitle: ");
- scanf("%s", songtitle);
- printf("\nUnesite interpreter: ");
- scanf("%s", interpreter);
- node=insert_node(node, songtitle, interpreter);
- break;
- case 3: destroy_nodes(node);
- node = 0;
- break;
- case 4: printf("\nNodes: ");
- print(node);
- break;
- case 5: printf("\nNumber of nodes is: ");
- br = count_nodes(node);
- printf("%ld", br);
- break;
- case 6: printf("\nUnesite interpreter: ");
- scanf("%s", interpreter);
- br=count_nodes_with_interpreter(node, interpreter);
- printf("\nBroj nodes sa intepreterom je: %ld", br);
- break;
- case 7: break;
- case 0: break;
- default: printf("\nPogresan unos....");
- break;
- }
- }while(c!=0);
- printf("Hello world!\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment