Question: To begin getting ready for CS 261, you will write a C program that fills and sorts a singly linked list of integers. Make sure

To begin getting ready for CS 261, you will write a C program that fills and sorts a singly linked list of integers. Make sure your program compiles using gcc and the following list.h and test_list.c files on the ENGR server. When sorting nodes, you may not swap the values between the nodes, you must change the pointers on the nodes to swap them.

list.h

struct node { int val; struct node *next; }; int length(struct node *); //get the length of the list void print(struct node *, int); //print a certain number of elements from the list starting with the first node struct node * push(struct node *, int); //put at front struct node * append(struct node *, int); //put at back struct node * clear(struct node *); //delete entire list struct node * remove_node(struct node *, int); //delete a particular node struct node * sort_ascending(struct node *); //sort the nodes in ascending order struct node * sort_descending(struct node *); //sort the nodes in descending order //insert into a specific location in the list struct node * insert_middle(struct node *, int val, int idx);

test_list.c

#include "list.h" #include #include int main (){ char ans[2]; int num; struct node *head = NULL; do { do { printf("Enter a number: "); scanf("%d", &num); head = push(head, num);//Can change to append printf("Do you want another num (y or n): "); scanf("%1s",ans); } while(ans[0] == 'y'); printf("Sort ascending or descending (a or d)? "); scanf("%1s",ans); Dec. 4 if(ans[0] == 'a') head=sort_ascending(head); else if(ans[0] == 'd') head=sort_descending(head); print(head, length(head)); printf("Do you want to do this again (y or n)? "); scanf("%1s",ans); head = clear(head); } while(ans[0] == 'y'); return 0; }

For example: Enter a number: 100 Do you want another num (y or n): y Enter a number: 30 Do you want another num (y or n): y Enter a number: 50 Do you want another num (y or n): y Enter a number: 10 Do you want another num (y or n): n Sort ascending or descending (a or d)? a Your linked list is: 10 30 50 100 Do you want to do this again (y or n)? n

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!