The code below is for: 1. Create a sorted linked list using tenStudent array (copy from array into the linked list will be done). 2. Append an element to the end of a list 3. Delete the last element from a list. 4. Delete the nth element from a list. >>>>>>>>>>> I need to complete the code to do : a. Using the linked list which is populated at step 1, create a binary tree. The new tree will be created during the deletion of the linked list. b. Print the content of the tree using “Inorder traversal”. c. Concatenate two lists The rest of question details in picture.. thank you The code: #include #include struct student { int TC; char F_name[12]; char L_name[12]; int age; char gender[2]; }; struct student tenStudent[10] = { 123,"X1","Y1",21,"M", 234,"X2","Y2",26,"F", 128,"X3","Y3",18,"M", 432,"X4","Y4",27,"M", 287,"X5","Y5",34,"F", 423,"X6","Y6",21,"M", 634,"X7","Y7",16,"F", 828,"X8","Y8",15,"M", 252,"X9","Y9",27,"F", 887,"X10","Y10",34,"F", }; struct Linked_list_node { struct student info; struct Linked_list_node* next; }; struct Linked_list_node* head = NULL; void append(struct student info) { struct Linked_list_node* newNode = (struct Linked_list_node*)malloc(sizeof(struct Linked_list_node)); newNode->info = info; newNode->next = NULL; if (head == NULL) { head = newNode; return; } struct Linked_list_node* ptr = head; while (ptr->next != NULL) { ptr = ptr->next; } ptr->next = newNode; } void delete_last() { if (head == NULL) { printf("Linked list is empty"); return; } //if linked list contain only one element then make head=null if (head->next == NULL) { free(head); //delete the memory allocated for head node head = NULL; return; } struct Linked_list_node* ptr = head, * prev = NULL; while (ptr->next != NULL) { prev = ptr; ptr = ptr->next; } free(ptr); //delete memory allocated for last node prev->next = NULL; //make previous node of last node equals null } void delete_nth_node(int n) { if (head == NULL) { printf("Linked list empty"); return; } struct Linked_list_node* ptr = head, * prev = NULL, * temp; //check if linked list contain only one node,if yes than make change in head if (n == 1) { temp = head; head = head->next; free(temp); return; } //find nth node and store it in ptr pointer for (int i = 1; i < n && ptr != NULL; i++) { prev = ptr; ptr = ptr->next; } if (ptr == NULL) { printf("n is greater than size of linked list"); } else { prev->next = ptr->next; free(ptr); } } void sort_linked_list() { struct Linked_list_node* ptr1 = head; struct Linked_list_node* ptr2 = head; //sort the linked list on the basis of TC number while (ptr1 != NULL) { ptr2 = ptr1->next; while (ptr2 != NULL) { if (ptr1->info.TC > ptr2->info.TC) { struct student temp = ptr1->info; ptr1->info = ptr2->info; ptr2->info = temp; } ptr2 = ptr2->next; } ptr1 = ptr1->next; } } void print() { struct Linked_list_node* ptr = head; printf("***************LINKED LIST********************\n\n"); while (ptr != NULL) { printf("%d\t", ptr->info.TC); printf("%s\t", ptr->info.F_name); printf("%s\t", ptr->info.L_name); printf("%d\t", ptr->info.age); printf("%s\n", ptr->info.gender); ptr = ptr->next; } } int main() { //create a head node for linked list // head= (struct Linked_list_node*)malloc(sizeof(struct Linked_list_node)); //add first student to the linked list append(tenStudent[0]); head->info = tenStudent[0]; //set next pointer to null head->next = NULL; //assign a temporary pointer for linked list struct Linked_list_node* ptr = head; int i = 1; //for each student in the given array, add it to the linked list while (i < 10) { append(tenStudent[i]); i++; } sort_linked_list(); //print the linked list ptr = head; printf("Sorted linked list\n"); print(); //create a new student node struct student new_stu = { 600,"X11","Y11",56,"M" }; append(new_stu); //again print the linked list printf("Linked list after adding new node at the end\n"); print(); printf("Linked list after deleting node at the end\n"); delete_last(); print(); delete_nth_node(v); //linked list after deleting 1st node printf("Linked list after deleting 1st node\n"); print(); return 0; }

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

The code below is for:

1. Create a sorted linked list using tenStudent array (copy from array into the linked list will be done).

2. Append an element to the end of a list

3. Delete the last element from a list.

4. Delete the nth element from a list.

>>>>>>>>>>>

I need to complete the code to do :

a. Using the linked list which is populated at step 1, create a binary tree. The new tree will be created during the deletion of the linked list.

b. Print the content of the tree using “Inorder traversal”.

c. Concatenate two lists

The rest of question details in picture.. thank you

The code:

#include<stdio.h>
#include<stdlib.h>

struct student
{
int TC;
char F_name[12];
char L_name[12];
int age;
char gender[2];
};
struct student tenStudent[10] = {
123,"X1","Y1",21,"M",
234,"X2","Y2",26,"F",
128,"X3","Y3",18,"M",
432,"X4","Y4",27,"M",
287,"X5","Y5",34,"F",
423,"X6","Y6",21,"M",
634,"X7","Y7",16,"F",
828,"X8","Y8",15,"M",
252,"X9","Y9",27,"F",
887,"X10","Y10",34,"F",
};

struct Linked_list_node
{
struct student info;
struct Linked_list_node* next;
};
struct Linked_list_node* head = NULL;

void append(struct student info) {
struct Linked_list_node* newNode = (struct Linked_list_node*)malloc(sizeof(struct Linked_list_node));
newNode->info = info;
newNode->next = NULL;

if (head == NULL)
{
head = newNode;
return;
}
struct Linked_list_node* ptr = head;
while (ptr->next != NULL)
{

ptr = ptr->next;
}
ptr->next = newNode;

}

void delete_last()
{
if (head == NULL) {
printf("Linked list is empty");
return;
}
//if linked list contain only one element then make head=null
if (head->next == NULL)
{
free(head); //delete the memory allocated for head node
head = NULL;
return;
}
struct Linked_list_node* ptr = head, * prev = NULL;
while (ptr->next != NULL)
{
prev = ptr;
ptr = ptr->next;
}

free(ptr); //delete memory allocated for last node
prev->next = NULL; //make previous node of last node equals null

}

void delete_nth_node(int n)

{
if (head == NULL) {
printf("Linked list empty");
return;
}
struct Linked_list_node* ptr = head, * prev = NULL, * temp;

//check if linked list contain only one node,if yes than make change in head
if (n == 1) {
temp = head;
head = head->next;
free(temp);
return;
}
//find nth node and store it in ptr pointer
for (int i = 1; i < n && ptr != NULL; i++) {
prev = ptr;
ptr = ptr->next;
}

if (ptr == NULL) {
printf("n is greater than size of linked list");

}
else {
prev->next = ptr->next;
free(ptr);

}


}

void sort_linked_list()
{
struct Linked_list_node* ptr1 = head;
struct Linked_list_node* ptr2 = head;
//sort the linked list on the basis of TC number
while (ptr1 != NULL)
{
ptr2 = ptr1->next;
while (ptr2 != NULL)
{
if (ptr1->info.TC > ptr2->info.TC)
{
struct student temp = ptr1->info;
ptr1->info = ptr2->info;
ptr2->info = temp;
}
ptr2 = ptr2->next;
}
ptr1 = ptr1->next;
}
}

void print()
{
struct Linked_list_node* ptr = head;
printf("***************LINKED LIST********************\n\n");
while (ptr != NULL)
{
printf("%d\t", ptr->info.TC);
printf("%s\t", ptr->info.F_name);
printf("%s\t", ptr->info.L_name);
printf("%d\t", ptr->info.age);
printf("%s\n", ptr->info.gender);
ptr = ptr->next;
}
}


int main()
{
//create a head node for linked list
// head= (struct Linked_list_node*)malloc(sizeof(struct Linked_list_node));
//add first student to the linked list
append(tenStudent[0]);
head->info = tenStudent[0];
//set next pointer to null
head->next = NULL;
//assign a temporary pointer for linked list
struct Linked_list_node* ptr = head;
int i = 1;
//for each student in the given array, add it to the linked list
while (i < 10)
{
append(tenStudent[i]);
i++;
}
sort_linked_list();
//print the linked list
ptr = head;
printf("Sorted linked list\n");
print();
//create a new student node
struct student new_stu = { 600,"X11","Y11",56,"M" };
append(new_stu);
//again print the linked list
printf("Linked list after adding new node at the end\n");
print();

printf("Linked list after deleting node at the end\n");
delete_last();
print();
delete_nth_node(v);
//linked list after deleting 1st node
printf("Linked list after deleting 1st node\n");
print();

return 0;
}

 

struct student
{
int TC;
char F_name[12];
char L_name[12];
int age;
char gender[2];/*M=male,F=Female*/
};
struct Linked_list_node
{
struct student info;
struct node *next;
};
struct Tree_node
{
struct node *left ;
struct student info ;
struct node *right;
};
sruct student tenStudent[10]={
123,"X1", "Y1", 21, "M",
234,"X2","Ү2", 26, "F",
128,"ХЗ","ҮЗ",18,"М",
432,"X4", "Y4", 27,"M",
287,"Х5","Ү5",34,"F",
423,"Х6", "Y6", 21, "M",
634,"X7", "Y7", 16, "F",
828,"х8", "Y8", 15,"M",
252,"X9" ,"Y9",27,"F",
887,"X10" ,"Y10",34,"F"
};
Transcribed Image Text:struct student { int TC; char F_name[12]; char L_name[12]; int age; char gender[2];/*M=male,F=Female*/ }; struct Linked_list_node { struct student info; struct node *next; }; struct Tree_node { struct node *left ; struct student info ; struct node *right; }; sruct student tenStudent[10]={ 123,"X1", "Y1", 21, "M", 234,"X2","Ү2", 26, "F", 128,"ХЗ","ҮЗ",18,"М", 432,"X4", "Y4", 27,"M", 287,"Х5","Ү5",34,"F", 423,"Х6", "Y6", 21, "M", 634,"X7", "Y7", 16, "F", 828,"х8", "Y8", 15,"M", 252,"X9" ,"Y9",27,"F", 887,"X10" ,"Y10",34,"F" };
Expert Solution
steps

Step by step

Solved in 6 steps with 2 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY