Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Please Note: there are specific differences between this problem and the previous posted solutions. Please write in C. Thank you. % doublesort [-d] [-o output_file_name]

Please Note: there are specific differences between this problem and the previous posted solutions. Please write in C. Thank you. % doublesort [-d] [-o output_file_name] input_file_name 

This assignment asks you to create a doubly linked list which will be used to sort the words in an input file and print the sorted words to an output file (or standard output) which will be the solution. Your program, called doublesort, will take the following command line arguments:

Read the words in from the input file one at a time. Convert all the letters to lower case. Skip any punctuation or special characters. If the output_file_name is given with the -o option, the program will output the sorted words to the given output file; otherwise, the output shall be to standard output.

In addition to parsing and processing the command line arguments, your program needs to do the following:

You need to construct a doubly linked list as you read from input. Each node in the list will link to the one in front of it and the one behind it if they exist. They will have NULL for the previous pointer if they are first in the list. They will have NULL for the next pointer if they are last in the list. You can look up doubly linked lists in your Data Structure textbook.

Initially the list is empty. The program reads from the input file one word at a time and converts it to lower case. Create a node with a pointer to the word and 2 pointers to nodes, previous and next. Initially the previous and next pointers should be NULL.

As long as you continue reading words, if the word is not already in the list, create a new node and place the node into the list in the proper alphabetical order. If there is a node in front of it, adjust the next pointer of that node to point to the new node and make the previous pointer of the new node to point to the node in front of it. If there is a node after it then adjust those pointers as well so the list remains continuous. All duplicate words are ignored.

An end of file would indicate the end of input from the input file.

Once the program has read all the input, the program then performs a traversal of the doubly linked list first to last, or last to first if the -d option is set, to print one word at a time to the output file or stdout. Print one word per line.

Before the program ends, it must reclaim the list! You can do this by going through the list and freeing all nodes. This can be done in either direction.

It is required that you use getopt for processing the command line and use malloc or calloc and free functions for dynamically allocating and deallocating nodes.

Note that there should be NO SORT function used. As the doubly linked list is created it is done in proper order.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Oracle Database 19c DBA By Examples Installation And Administration

Authors: Ravinder Gupta

1st Edition

B09FC7TQJ6, 979-8469226970

More Books

Students also viewed these Databases questions

Question

What are the Five Phases of SDLC? Explain each briefly.

Answered: 1 week ago

Question

How can Change Control Procedures manage Project Creep?

Answered: 1 week ago