Answer to Question #232101 in C for Glenn

Question #232101

Write a menu driven program to perform the following operations in a header linked list by using suitable user defined functions for each case. The head node keeps the count of the total number of nodes in the list. The data node keeps the student information: Name, Roll No, CGPA, Address_City, Branch.


1. Create

2. Display student information

3. Display the total number of nodes (in O(1) time)

4. Display the student's details belonging to a particular branch

5. Display the student's details securing > 7.5 CGPA and belonging to a given branch.


1
Expert's answer
2021-09-01T23:58:10-0400
#include <iostream>


using namespace std;
   
struct b_node 
{ 
    int data; 
    struct b_node *left, *right; 
    };  
    struct b_node *newNode(int k) 
    { 
    struct b_node *temp =  new struct b_node(); 
    temp->data = k; 
    temp->left = temp->right = NULL; 
    return temp; 
} 
   


void inorder(struct b_node *root) 
{ 
    if (root != NULL) 
        { 
    inorder(root->left); 
    cout<<root->data<<" "; 
    inorder(root->right); 
        } 
} 
   


struct b_node* insert(struct b_node* node, int k) 
{ 
   
if (node == NULL) return newNode(k); 
   
if (k < node->data) 
node->left  = insert(node->left, k); 
else
node->right = insert(node->right, k); 
   
return node; 
} 
struct b_node * minValueNode(struct b_node* node) 
{ 
struct b_node* current = node; 
   
while (current && current->left != NULL) 
current = current->left; 
   
return current; 
} 
  
struct b_node* deleteNode(struct b_node* root, int k) 
{ 
     
if (root == NULL) return root; 
   
if (k < root->data) 
root->left = deleteNode(root->left, k); 
    
else if (k > root->data) 
root->right = deleteNode(root->right, k); 
   
else
    { 
if (root->left == NULL) 
        { 
struct b_node *temp = root->right; 
free(root); 
return temp; 
        } 
else if (root->right == NULL) 
        { 
struct b_node *temp = root->left; 
free(root); 
return temp; 
        } 
   
struct b_node* temp = minValueNode(root->right); 
   
root->data = temp->data; 
         
root->right = deleteNode(root->right, temp->data); 
    } 
    return root; 
}   
int main() 
{ 


    struct b_node *root = NULL; 
    root = insert(root, 10); 
    root = insert(root, 20); 
    root = insert(root, 70); 
    root = insert(root, 50); 
    root = insert(root, 80); 
     
    cout<<"Binary Search Tree created "<<endl; 
    inorder(root); 
    cout<<"\nDelete node 70\n"; 
    root = deleteNode(root, 70); 
    cout<<"Inorder traversal for the modified Binary Search Tree:"<<endl; 
    inorder(root); 
       
return 0; 
}

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

Glenn
12.09.21, 11:25

Thanks !!

Leave a comment

LATEST TUTORIALS
New on Blog
APPROVED BY CLIENTS