Write a program that creates a linked list of 10 alphabetic characters, then sea
ID: 3547292 • Letter: W
Question
Write a program that creates a linked list of 10 alphabetic characters, then searches the list and prints out the number of times a particular character is encountered. The user should be prompted to input the characters. After the list is constructed it should print out the list and prompt the user to input the particular character to be found. Finally the program should print out the original list without the duplications of the searched item.
Has to be in C not C++.
Explanation / Answer
#include #include #include struct test_struct { int val; struct test_struct *next; }; struct test_struct *head = NULL; struct test_struct *curr = NULL; struct test_struct* create_list(int val) { printf(" creating list with headnode as [%d] ",val); struct test_struct *ptr = (struct test_struct*)malloc(sizeof(struct test_struct)); if(NULL == ptr) { printf(" Node creation failed "); return NULL; } ptr->val = val; ptr->next = NULL; head = curr = ptr; return ptr; } struct test_struct* add_to_list(int val, bool add_to_end) { if(NULL == head) { return (create_list(val)); } if(add_to_end) printf(" Adding node to end of list with value [%d] ",val); else printf(" Adding node to beginning of list with value [%d] ",val); struct test_struct *ptr = (struct test_struct*)malloc(sizeof(struct test_struct)); if(NULL == ptr) { printf(" Node creation failed "); return NULL; } ptr->val = val; ptr->next = NULL; if(add_to_end) { curr->next = ptr; curr = ptr; } else { ptr->next = head; head = ptr; } return ptr; } struct test_struct* search_in_list(int val, struct test_struct **prev) { struct test_struct *ptr = head; struct test_struct *tmp = NULL; bool found = false; printf(" Searching the list for value [%d] ",val); while(ptr != NULL) { if(ptr->val == val) { found = true; break; } else { tmp = ptr; ptr = ptr->next; } } if(true == found) { if(prev) *prev = tmp; return ptr; } else { return NULL; } } int delete_from_list(int val) { struct test_struct *prev = NULL; struct test_struct *del = NULL; printf(" Deleting value [%d] from list ",val); del = search_in_list(val,&prev); if(del == NULL) { return -1; } else { if(prev != NULL) prev->next = del->next; if(del == curr) { curr = prev; } else if(del == head) { head = del->next; } } free(del); del = NULL; return 0; } void print_list(void) { struct test_struct *ptr = head; printf(" -------Printing list Start------- "); while(ptr != NULL) { printf(" [%d] ",ptr->val); ptr = ptr->next; } printf(" -------Printing list End------- "); return; } int main(void) { int i = 0, ret = 0; struct test_struct *ptr = NULL; print_list(); for(i = 5; i0; i--) add_to_list(i,false); print_list(); for(i = 1; ival); } print_list(); ret = delete_from_list(i); if(ret != 0) { printf(" delete [val = %d] failed, no such element found ",i); } else { printf(" delete [val = %d] passed ",i); } print_list(); } return 0; }Related Questions
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.