Untitled

 avatar
unknown
plain_text
4 years ago
11 kB
6
Indexable
#include <iostream>
#include <fstream>
#include <string>
#include "SortedLinkedList.h"

using namespace std;

int main(int argc, char** argv) {

    SortedLinkedList list;

    int value;
    int length;

    ifstream inputFile(argv[1], ios::in);
    if (!inputFile) {
        cout << "File cannot be opened...Terminating" << endl;
        exit(1);
    }

    // reads the numbers from the input file
    while (inputFile >> value) {
        ItemType newItem;
        newItem.initialize(value);
        list.insertItem(newItem);
    }
    length = list.length();

    string userInput;

    /*          */
    SortedLinkedList newList;
    int length2;
    int listValues;

    // Asking length of list
    cout << "Length of list to merge: ";
    cin >> length2;
    while (cin.fail()) {
        cout << "Please enter a numerical value: ";
        cin.clear();
        cin.ignore();
        cin >> length2;
    }

    // Asking for elements
    bool amount = false;
    int counter = 0;
    cout << "List elements separated by spaces in order: ";
    // for loop

    /*
    while (cin >> listValues && amount == false) {
        counter++;
        ItemType a;
        a.initialize(listValues);
        newList.insertItem(a);
        if (counter == length2) {
            amount = true;
            break;
        }
    }
     */

    // Reading input values for newList
    for (int i = 0; i < length2; i++) {
        cin >> listValues;
        ItemType a;
        a.initialize(listValues);
        newList.insertItem(a);
    }



    // original list
    cout << "List 1: ";
    list.resetList();
    for (int i = 0; i < list.length(); i++) {
        ItemType a = list.getNextItem();
        cout << a.getValue() << " ";
    }
    cout << endl;
    list.resetList();

    // user defined list
    cout << "List 2: ";
    newList.resetList();
    for (int i = 0; i < newList.length(); i++) {
        ItemType a = newList.getNextItem();
        cout << a.getValue() << " ";
    }
    cout << endl;
    newList.resetList();

    list.commonList(newList);
    cout << "Made it to end" << endl;

    /*

    bool start = true;

        cout << "Commands:" << endl;

        cout << "(i) - Insert Value" << endl
             << "(d) - Delete Value" << endl
             << "(s) - Search Value" << endl
             << "(n) - Print next iterator value" << endl
             << "(r) - Reset Iterator" << endl
             << "(a) - Delete alternate nodes" << endl
             << "(m) - Merge two lists" << endl
             << "(t) - Intersection" << endl
             << "(p) - Print list" << endl
             << "(l) - Print length" << endl
             << "(q) - Quit Program" << endl;

    while (start) {

        cout << "Enter a Command: ";
        cin >> userInput;

        if (userInput.compare("i") == 0) {        // Insert Value
            list.resetList();
            // print out values
            int number;

            // print out list
            for (int i = 0; i < list.length(); i++) {
                ItemType a = list.getNextItem();
                cout << a.getValue() << " ";
            }

            // ask for number
            cout << endl;
            cout << "Enter a number: ";
            cin >> number;
            while (cin.fail()) {
                cout << "Please enter a numerical value: ";
                cin.clear();
                cin.ignore();
                cin >> number;
            }

            // insert item
            ItemType insertItem;
            insertItem.initialize(number);
            list.insertItem(insertItem);
            list.resetList();

            // print out list again
            length = list.length();
            for (int i = 0; i < list.length(); i++) {
                ItemType a = list.getNextItem();
                cout << a.getValue() << " ";
            }

            // reset list for next command
            list.resetList();
            cout << endl;
        } else if (userInput.compare("d") == 0) { // Delete Value
            int number;

            list.resetList();
            // print out list
            for (int i = 0; i < list.length(); i++) {
                ItemType a = list.getNextItem();
                cout << a.getValue() << " ";
            }

            // ask for number to delete
            cout << endl;
            cout << "Enter a number: ";
            cin >> number;
            while (cin.fail()) {
                cout << "Please enter a numerical value: ";
                cin.clear();
                cin.ignore();
                cin >> number;
            }
            int counter = 0;
            ItemType b;
            b.initialize(number);
            list.resetList();
            for (int i = 0; i < list.length(); i++) {
                ItemType a = list.getNextItem();
                if (a.compareTo(b) == EQUAL) {
                    counter++;
                }
            }
            if (counter != 0) {

                // delete item
                ItemType deletedItem;
                deletedItem.initialize(number);
                list.deleteItem(deletedItem);
                list.resetList();

            } else {
                cout << "Item not found!" << endl;
            }
            // print out new list

            list.resetList();
            length = list.length();
            for (int i = 0; i < list.length(); i++) {
                ItemType a = list.getNextItem();
                cout << a.getValue() << " ";
            }

            // reset list for next command
            list.resetList();
            cout << endl;

        } else if (userInput.compare("s") == 0) { // Search Value
            int number;
            int index;

            list.resetList();
            // print out list
            for (int i = 0; i < list.length(); i++) {
                ItemType a = list.getNextItem();
                cout << a.getValue() << " ";
            }
            cout << endl;
            cout << "Enter a value to search: ";
            cin >> number;

            while (cin.fail()) {
                cout << "Please enter a numerical value: ";
                cin.clear();
                cin.ignore();
                cin >> number;
            }

            ItemType a;
            a.initialize(number);
            index = list.searchItem(a);
            if (index >= 0) {
                cout << "Index: " << index << endl;
            } else {
                cout << "Item is not found." << endl;
            }
            list.resetList();

        } else if (userInput.compare("n") == 0) { // Print next iterator value

                ItemType a;
                a = list.getNextItem();
                cout << a.getValue() << endl;

        } else if (userInput.compare("r") == 0) { // Reset Iterator
                list.resetList();
        } else if (userInput.compare("a") == 0) { // Delete alternate nodes
            // alternate deleting when list has one node doesnt do anything

            cout << "List before alternate delete: ";
            list.resetList();
            for (int i = 0; i < list.length(); i++) {
                ItemType a;
                a = list.getNextItem();
                cout << a.getValue() << " ";
            }
            list.resetList();
            cout << endl;

            list.deleteAlternateNodes();

            cout << "List after alternate delete: ";
            list.resetList();
            for (int i = 0; i < list.length(); i++) {
                ItemType a;
                a = list.getNextItem();
                cout << a.getValue() << " ";
            }
            list.resetList();
            cout << endl;

        } else if (userInput.compare("m") == 0) { // Merge two lists
            // merging a second time doesn't work


            SortedLinkedList newList;
            int length2;
            int listValues;

            // Asking length of list
            cout << "Length of list to merge: ";
            cin >> length2;
            while (cin.fail()) {
                cout << "Please enter a numerical value: ";
                cin.clear();
                cin.ignore();
                cin >> length2;
            }

            // Asking for elements
            bool amount = false;
            int counter = 0;
            cout << "List elements separated by spaces in order: ";
            while (cin >> listValues && amount == false) {
                counter++;
                ItemType a;
                a.initialize(listValues);
                newList.insertItem(a);
                if (counter == length2) {
                    amount = true;
                    break;
                }
            }

            // merge list
            list.mergeList(newList);

            newList.resetList();
            list.resetList();
            // print list 1
            for (int i = 0; i < list.length(); i++) {
                ItemType a = list.getNextItem();
                cout << a.getValue() << " ";
            }
            list.resetList();
            newList.resetList();
            cout << endl;

        } else if (userInput.compare("t") == 0) { // Intersection
            SortedLinkedList newList;
            int length2;
            int listValues;

            // Asking length of list
            cout << "Length of list to merge: ";
            cin >> length2;
            while (cin.fail()) {
                cout << "Please enter a numerical value: ";
                cin.clear();
                cin.ignore();
                cin >> length2;
            }

            // Asking for elements
            bool amount = false;
            int counter = 0;
            cout << "List elements separated by spaces in order: ";
            while (cin >> listValues && amount == false) {
                counter++;
                ItemType a;
                a.initialize(listValues);
                newList.insertItem(a);
                if (counter == length2) {
                    amount = true;
                    break;
                }
            }

            cout << "List 1: ";
            list.resetList();
            for (int i = 0; i < list.length(); i++) {
                ItemType a = list.getNextItem();
                cout << a.getValue() << " ";
            }
            cout << endl;
            list.resetList();

            cout << "List 2: ";
            newList.resetList();
            for (int i = 0; i < newList.length(); i++) {
                ItemType a = newList.getNextItem();
                cout << a.getValue() << " ";
            }
            cout << endl;
            newList.resetList();

            list.commonList(newList);

        } else if (userInput.compare("p") == 0) { // Print List
            list.resetList();
            for (int i = 0; i < list.length(); i++) {
                ItemType a;
                a = list.getNextItem();
                cout << a.getValue() << " ";
            }
            list.resetList();
            cout << endl;
        } else if (userInput.compare("l") == 0) { // Print length
            cout << "List length is: " << list.length() << endl;
        } else if (userInput.compare("q") == 0) { // Quit Program
            cout << "Exiting program..." << endl;
            exit(1);
        } else { // Anything else
            cout << "Invalid Command. Please try again!" << endl;
        }
    }

     */
}
Editor is loading...