Question

In: Computer Science

Develop a program to maintain a Linked List of homework assignments name and due date. When...

Develop a program to maintain a Linked List of homework assignments name and due date. When an assignment is assigned, add it to the list, and when it is completed, remove it. You should keep track of the due date. Your program should provide the following services each contained within its own method:

  • Add a new assignment.
  • Remove an assignment.
  • Provide a list of the assignments in the order they were assigned.
  • Find the assignment(s) with the earliest due date

-The commands are input from the user keyboard as well as the Assignment Names and the Assignment Due Dates. All entered by the user.

-Coded with comments

Solutions

Expert Solution

Linked List Program: -

#include<iostream>

#include<cstdio>

#include<cstdlib>

using namespace std;

/*

* Node Declaration

*/

struct node

{

    int info;

    struct node *next;

}*start;

/*

* Class Declaration

*/

class single_llist

{

    public:

        node* create_node(int);

        void insert_begin();

        void insert_pos();

        void insert_last();

        void delete_pos();

        void sort();

        void search();

        void update();

        void reverse();

        void display();

        single_llist()

        {

            start = NULL;

        }

};

/*

* Main :contains menu

*/

main()

{

    int choice, nodes, element, position, i;

    single_llist sl;

    start = NULL;

    while (1)

    {

        cout<<endl<<"---------------------------------"<<endl;

        cout<<endl<<"Operations on singly linked list"<<endl;

        cout<<endl<<"---------------------------------"<<endl;

        cout<<"1.Insert Node at beginning"<<endl;

        cout<<"2.Insert node at last"<<endl;

        cout<<"3.Insert node at position"<<endl;

        cout<<"4.Sort Link List"<<endl;

        cout<<"5.Delete a Particular Node"<<endl;

        cout<<"6.Update Node Value"<<endl;

        cout<<"7.Search Element"<<endl;

        cout<<"8.Display Linked List"<<endl;

        cout<<"9.Reverse Linked List "<<endl;

        cout<<"10.Exit "<<endl;

        cout<<"Enter your choice : ";

        cin>>choice;

        switch(choice)

        {

        case 1:

            cout<<"Inserting Node at Beginning: "<<endl;

            sl.insert_begin();

            cout<<endl;

            break;

        case 2:

            cout<<"Inserting Node at Last: "<<endl;

            sl.insert_last();

            cout<<endl;

            break;

        case 3:

            cout<<"Inserting Node at a given position:"<<endl;

            sl.insert_pos();

            cout<<endl;

            break;

        case 4:

            cout<<"Sort Link List: "<<endl;

            sl.sort();

            cout<<endl;

            break;

        case 5:

            cout<<"Delete a particular node: "<<endl;

            sl.delete_pos();

            break;

        case 6:

            cout<<"Update Node Value:"<<endl;

            sl.update();

            cout<<endl;

            break;

        case 7:

            cout<<"Search element in Link List: "<<endl;

            sl.search();

            cout<<endl;

            break;

        case 8:

            cout<<"Display elements of link list"<<endl;

            sl.display();

            cout<<endl;

            break;

        case 9:

            cout<<"Reverse elements of Link List"<<endl;

            sl.reverse();

            cout<<endl;

            break;

        case 10:

            cout<<"Exiting..."<<endl;

            exit(1);

            break;

        default:

            cout<<"Wrong choice"<<endl;

        }

    }

}

/*

* Creating Node

*/

node *single_llist::create_node(int value)

{

    struct node *temp, *s;

   temp = new(struct node);

    if (temp == NULL)

    {

        cout<<"Memory not allocated "<<endl;

        return 0;

    }

    else

    {

        temp->info = value;

        temp->next = NULL;    

        return temp;

    }

}

/*

* Inserting element in beginning

*/

void single_llist::insert_begin()

{

    int value;

    cout<<"Enter the value to be inserted: ";

    cin>>value;

    struct node *temp, *p;

    temp = create_node(value);

    if (start == NULL)

    {

        start = temp;

        start->next = NULL;         

    }

    else

    {

        p = start;

        start = temp;

        start->next = p;

    }

    cout<<"Element Inserted at beginning"<<endl;

}

/*

* Inserting Node at last

*/

void single_llist::insert_last()

{

    int value;

    cout<<"Enter the value to be inserted: ";

    cin>>value;

    struct node *temp, *s;

    temp = create_node(value);

    s = start;

    while (s->next != NULL)

    {        

        s = s->next;       

    }

    temp->next = NULL;

    s->next = temp;

    cout<<"Element Inserted at last"<<endl;

}

/*

* Insertion of node at a given position

*/

void single_llist::insert_pos()

{

    int value, pos, counter = 0;

    cout<<"Enter the value to be inserted: ";

    cin>>value;

    struct node *temp, *s, *ptr;

    temp = create_node(value);

    cout<<"Enter the postion at which node to be inserted: ";

    cin>>pos;

    int i;

    s = start;

    while (s != NULL)

    {

        s = s->next;

        counter++;

    }

    if (pos == 1)

    {

        if (start == NULL)

        {

            start = temp;

            start->next = NULL;

        }

        else

        {

            ptr = start;

            start = temp;

            start->next = ptr;

        }

    }

    else if (pos > 1 && pos <= counter)

    {

        s = start;

        for (i = 1; i < pos; i++)

        {

            ptr = s;

            s = s->next;

        }

        ptr->next = temp;

        temp->next = s;

    }

    else

    {

        cout<<"Positon out of range"<<endl;

    }

}

/*

* Sorting Link List

*/

void single_llist::sort()

{

    struct node *ptr, *s;

    int value;

    if (start == NULL)

    {

        cout<<"The List is empty"<<endl;

        return;

    }

    ptr = start;

    while (ptr != NULL)

    {

        for (s = ptr->next;s !=NULL;s = s->next)

        {

            if (ptr->info > s->info)

            {

                value = ptr->info;

                ptr->info = s->info;

                s->info = value;

            }

        }

        ptr = ptr->next;

    }

}

/*

* Delete element at a given position

*/

void single_llist::delete_pos()

{

    int pos, i, counter = 0;

    if (start == NULL)

    {

        cout<<"List is empty"<<endl;

        return;

    }

    cout<<"Enter the position of value to be deleted: ";

    cin>>pos;

    struct node *s, *ptr;

    s = start;

    if (pos == 1)

    {

        start = s->next;

    }

    else

    {

        while (s != NULL)

        {

            s = s->next;

            counter++;

        }

        if (pos > 0 && pos <= counter)

        {

            s = start;

            for (i = 1;i < pos;i++)

            {

                ptr = s;

                s = s->next;

            }

            ptr->next = s->next;

        }

        else

        {

            cout<<"Position out of range"<<endl;

        }

        free(s);

        cout<<"Element Deleted"<<endl;

    }

}

/*

* Update a given Node

*/

void single_llist::update()

{

    int value, pos, i;

    if (start == NULL)

    {

        cout<<"List is empty"<<endl;

        return;

    }

    cout<<"Enter the node postion to be updated: ";

    cin>>pos;

    cout<<"Enter the new value: ";

    cin>>value;

    struct node *s, *ptr;

    s = start;

    if (pos == 1)

    {

        start->info = value;

    }

    else

    {

        for (i = 0;i < pos - 1;i++)

        {

            if (s == NULL)

            {

              cout<<"There are less than "<<pos<<" elements";

                return;

            }

            s = s->next;

        }

        s->info = value;

    }

    cout<<"Node Updated"<<endl;

}

/*

* Searching an element

*/

void single_llist::search()

{

    int value, pos = 0;

    bool flag = false;

    if (start == NULL)

    {

        cout<<"List is empty"<<endl;

        return;

    }

    cout<<"Enter the value to be searched: ";

    cin>>value;

    struct node *s;

    s = start;

    while (s != NULL)

    {

        pos++;

        if (s->info == value)

        {

            flag = true;

            cout<<"Element "<<value<<" is found at position "<<pos<<endl;

        }

        s = s->next;

    }

    if (!flag)

        cout<<"Element "<<value<<" not found in the list"<<endl;

}

/*

* Reverse Link List

*/

void single_llist::reverse()

{

    struct node *ptr1, *ptr2, *ptr3;

    if (start == NULL)

    {

        cout<<"List is empty"<<endl;

        return;

    }

    if (start->next == NULL)

    {

        return;

    }

    ptr1 = start;

    ptr2 = ptr1->next;

    ptr3 = ptr2->next;

    ptr1->next = NULL;

    ptr2->next = ptr1;

    while (ptr3 != NULL)

    {

        ptr1 = ptr2;

        ptr2 = ptr3;

        ptr3 = ptr3->next;

        ptr2->next = ptr1;        

    }

    start = ptr2;

}

/*

* Display Elements of a link list

*/

void single_llist::display()

{

    struct node *temp;

    if (start == NULL)

    {

        cout<<"The List is Empty"<<endl;

        return;

    }

    temp = start;

    cout<<"Elements of list are: "<<endl;

    while (temp != NULL)

    {

        cout<<temp->info<<"->";

        temp = temp->next;

    }

    cout<<"NULL"<<endl;

}

Output: -

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 8

Display elements of link list

The List is Empty.

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 5

Delete a particular node:

List is empty

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 6

Update Node Value:

List is empty

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 7

Search element in Link List:

List is empty

--------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 3

Inserting Node at a given position:

Enter the value to be inserted: 1010

Enter the postion at which node to be inserted: 5

Positon out of range

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 1

Inserting Node at Beginning:

Enter the value to be inserted: 100

Element Inserted at beginning

--------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 1

Inserting Node at Beginning:

Enter the value to be inserted: 200

Element Inserted at beginning

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 8

Display elements of link list

Elements of list are:

200->100->NULL

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 2

Inserting node at last:

Enter the value to be inserted: 50

Element Inserted at last

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 2

Inserting node at last:

Enter the value to be inserted: 150

Element Inserted at last

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 8

Display elements of link list

Elements of list are:

200->100->50->150->NULL

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 3

Inserting node at a given position:

Enter the value to be inserted: 1111

Enter the position at which node to be inserted: 4

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 8

Display elements of link list

Elements of list are:

200->100->50->1111->150->NULL

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 3

Inserting node at a given position:

Enter the value to be inserted: 1010

Enter the position at which node to be inserted: 100

Position out of range

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 8

Display elements of link list

Elements of list are:

200->100->50->1111->150->NULL

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 5

Delete a Particular node:

Enter the position of value to be deleted: 1

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 8

Display elements of link list

Elements of list are:

100->50->1111->150->NULL

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 6

Update Node Value:

Enter the node position to be updated: 1

Enter the new value: 1010

Node Updated

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 8

Display elements of link list

Elements of list are:

1010->50->1111->150->NULL

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 7

Search element in Link List:

Enter the value to be searched: 50

Element 50 is found at position 2

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 9

Reverse elements of Link List

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 8

Display elements of link list

Elements of list are:

150->1111->50->1010->NULL

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 4

Sort Link List:

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 8

Display elements of link list

Elements of list are:

50->150->1010->1111->NULL

---------------------------------

Operations on singly linked list

---------------------------------

1.Insert Node at beginning

2.Insert node at last

3.Insert node at position

4.Sort Link List

5.Delete a Particular Node

6.Update Node Value

7.Search Element

8.Display Linked List

9.Reverse Linked List

10.Exit

Enter your choice : 10

Exiting...


Related Solutions

C++ Create a program that use the linkedbag 3. Develop a program to maintain a list...
C++ Create a program that use the linkedbag 3. Develop a program to maintain a list of homework assignments. When an assignment is assigned, add it to the list, and when it is completed, remove it. You should keep track of the due date. Your program should provide the following services: • Add a new assignment. • Remove an assignment. • Provide a list of the assignments in the order they were assigned. • Find the assignment(s) with the earliest...
Write a program of doubly Circular linked list to maintain records of employees. Take employee ID,...
Write a program of doubly Circular linked list to maintain records of employees. Take employee ID, name and salary as data of each employee. Search a particular record on ID and display the previous and next records as well. Whichever ID it give, it should display all the records because of being circular. Code needed in Java.
Objective: Learning linked list. Problem Specification:             An employer would like to maintain a linked list...
Objective: Learning linked list. Problem Specification:             An employer would like to maintain a linked list for employees, the data stored is ·An employee number (a positive integer) ·A yearly salary (a float). ·Number of dependents (a short positive integer) The employer would like you as the programmer to design and implement a linked list using classes. For each class two files are needed, one to define the class, the other to implement the methods. In addition, the client uses...
In this homework, you will implement a single linked list to store a list of employees...
In this homework, you will implement a single linked list to store a list of employees in a company. Every employee has an ID, name, department, and salary. You will create 2 classes: Employee and EmployeeList. Employee class should have all information about an employee and also a “next” pointer. See below: Employee Type Attribute int ID string name string department int salary Employee* next Return Type Function (constructor) Employee(int ID, string name, string department, int salary) EmployeeList class should...
JAVA: Provide two different implementations, an array and a linked list, to maintain a list of...
JAVA: Provide two different implementations, an array and a linked list, to maintain a list of names (two separate programs).The following operations are available: insert rear, insert front, remove a particular element, and print the whole list. Do not implement an ADT(Do not use a class with data and operations) Just set up a fixed size array or a linked list of nodes in main and provide code in main or functions/static methods to perform insert, remove, and print. You...
Create a program that when run, prompts the user to enter a city name, a date,...
Create a program that when run, prompts the user to enter a city name, a date, the minimum temperature and the maximum temperature. Calculate the difference between the maximum temperature and the minimum temperature. Calculate the average temperature based on the minimum and maximum temperature. Print out the following: City name today's Date minimum temperature maximum temperature average temperature difference between minimum and maximum The following is a sample run, user input is shown in bold underline. Enter City Name:...
Change program linkedListClass to the linked list for student items (a student item contains id, name...
Change program linkedListClass to the linked list for student items (a student item contains id, name and score, where the id is used as key) and test it in the main method. You can define a student item using a class of student. given the following codes; import java.util.*; public class linkedListClass {    public Node header;    public linkedListClass()    {        header = null;    }    public final Node Search(int key)    {        Node...
Complete the following Module 2 Written Homework Assignment for this module by the stated due date...
Complete the following Module 2 Written Homework Assignment for this module by the stated due date on the Schedule. Please submit in the Module 2 Written Homework Assignment folder as a .doc, .docx, .pdf or .rtf file. Instructions Complete the following questions in the form of short essays. Each question is worth 6 points. Be sure to cite your references as needed. Type all responses following each question on this assignment page and submit to the folder. All-you-can-eat restaurants allow...
implementing linked list using c++ Develop an algorithm to implement an employee list with employee ID,...
implementing linked list using c++ Develop an algorithm to implement an employee list with employee ID, name, designation and department using linked list and perform the following operations on the list. Add employee details based on department Remove employee details based on ID if found, otherwise display appropriate message Display employee details Count the number of employees in each department
In this problem, you will write a program that reverses a linked list. Your program should...
In this problem, you will write a program that reverses a linked list. Your program should take as input a space-separated list of integers representing the original list, and output a space-separated list of integers representing the reversed list. Your algorithm must have a worst-case run- time in O(n) and a worst-case space complexity of O(1) beyond the input. For example, if our input is: 5 7 1 2 3 then we should print: 3 2 1 7 5 Please...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT