0

I'm working on this code for class, I am not expecting anyone to do my homework but help would be appreciated. Nodes are confusing for me and my professor did not explain well. The errors I am getting are where I declare the functions, I dont know the nodeType(?) that goes in the arguments. Hopefully that makes sense.I think I may have also need to initialize the node?

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;

///employeeType struct, node struct, typedef statement go here.
struct employeeType
{
int idNum;
string firstName;
string lastName;
char gender;
double payrate;
int dependents;

};

typedef employeeType infoType;

struct nodeType
{
infoType info;
nodeType *link;

};


            // Function Prototypes
 void print(nodeType *);  // Function to print a LL
 void printOne (employeeType one);
 nodeType* linkdListCreate2 (ifstream& inFile);
 nodeType* linkdListCreate1 (ifstream& inFile);
 employeeType getOne ( ifstream& dataIn );
 int avgDependents (nodeType *list);
 int locateId(nodeType *list, int targetID);
 nodeType* deleteNode( nodeType  *first, int deleteID);

  int main ()
{
    //get our input file stream handling taken care of
        ifstream dataFile;
        dataFile.open ( "A10-input1.txt" );
        if (!dataFile)
        {  cout << "\n\n\t  INPUT FILE ERROR  \n\n";    }
    //------------------------------------------------
    ///Declare and initialize a head pointer to first node in list

    char choice ='U';
    while((choice != 'B')&&(choice !='F'))  {
        cout<<"Create list: Forwards(enter F)   Backwards(enter B)\n";
        cin >>choice;
    }
    ///Use a decision structure to create the list
    /// either forwards or backwards, according to the user input.
    if(choice == 'F' || choice == 'f')
    {
    linkdListCreate1(dataFile);
    }
    else if(choice == 'b' || choice == 'B')
    {
    linkdListCreate2(dataFile);
    }
    ///print the list of employees
    print(first);

    /// calculate the average number of dependents
    cout<<"\nAverage # dependents: ";
    avgDependents(first);


    ///use locateID function to determine target value, then deleteNode
    ///to remove the employee at that node number from the LL
    int id=0, location=0;
    cout<<"\nEnter an ID to fire someone: ";
    cin>>id;
    location = locateId(first, id);
    if(location!=0)
    {
       cout<<"\nID Number "<<id<<" was at node "<<location<<", and has been terminated.\n";

       ///terminate the employee with the target ID number, by deleting the node
    deleteNode(first, location);
       cout <<"\n\nNew list:\n";
       ///print the list of employees
       print(first);

    }
    else
        cout <"\nThat ID is not in our list.\n";


    cout <<"\n";
    return 0;
}
///-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=:-@
///-----------------------------------------------------------------
//Creates a linked list by adding a new last node after each call to
// the getOne function, thus inserting the nodes into the list in the
// same order as the input file - returns pointer to first node in list.
 nodeType* linkdListCreate1 (ifstream& inFile)
 {

    nodeType *first = NULL;
    nodeType *last = NULL;
    nodeType *temp = NULL;

    employeeType person;

    person = getOne(inFile);

    while(inFile)
    {
    temp = new nodeType;
    temp->info = person;
    temp->link = NULL;

    if(first == NULL)
    {
    first = temp;
    last = temp;

    }

    else
    {
    last->link = temp;
    last = temp;

    }
        person = getOne(inFile);
    }
        return first;

 }
///-----------------------------------------------------------------
//Creates a linked list by setting the first pointer to the new node
// after each call to the getOne function, thus inserting nodes into
// list in reverse order. returns pointer to first node in list.
 nodeType* linkdListCreate2 (ifstream& inFile)
 {
    nodeType *first = NULL, *temp = NULL;

    employeeType person;
    person = getOne(inFile);

    while(inFile)
    {
        temp = new nodeType;
        temp->info = person;
        temp->link = first;
        first = temp;
        person = getOne(inFile);

    }

    return first;

 }
///-----------------------------------------------------------------
//print makes a temp pointer to head of LL, and moves node
//to node displaying the values of the members of each element
  void print(nodeType *first)
   {
        nodeType *current;
        current = first;

        while(current != NULL)
        {
        printOne(current->info);
        cout<<"\n";
        current = current->link;
        }

   }
///-----------------------------------------------------------------
//the getOne function reads one line of input data from the file stream,
// and loads it into an employeeType class or struct object
// that it returns to the calling function
employeeType getOne ( ifstream& dataIn )
{
    employeeType one;

      dataIn >> one.firstName >> one.lastName >> one.gender
             >> one.idNum >> one.payrate >> one.dependents;

      return one;
 }
///-----------------------------------------------------------------
//print out one employeeType class or struct object
 void printOne ( employeeType one)
 {
      cout << fixed << showpoint << setprecision (2);
      cout << "ID Num: " << one.idNum << endl;
      cout << "Name: " <<one.firstName << " " << one.lastName<< endl;
      cout << "-Gender: " << one.gender <<"\n";
      cout << "-Payrate $"<< one.payrate <<"\n";
      cout << "-Dependents " << one.dependents <<"\n";
 }
///-----------------------------------------------------------------
// in case of duplicates, the first occurrence of deleteItem is removed.
// list can be ordered or unordered
nodeType * deleteNode(nodeType *first, int deleteID)
{
//find correct position

badOne = new nodeType;
badOne = first->info;
first->link = badOne->link;
delete badOne;

}//end deleteNode
//=======================================================================
//calculates average number of dependents for all employees
 int avgDependents (nodeType *list)
 {
    if(list == NULL)
    {
    return 0;
    }

    int sum=0, avg=0, count=0;
    nodeType *ptr;
    ptr = list;

    while( ptr != NULL)
    {
    sum = sum + ptr->info.dependents;
    count++;
    ptr = ptr->link;

    }

    if(count!= 0)
    {
    avg = sum/count;
    return avg;

    }

 }// end of average function
//=======================================================================
//=======================================================================
//locates the number of the node in the list that
//contains the target ID value.
 int locateId(nodeType *list, int targetID)
 {
    if(list == NULL)
    {
    return 0;
    }

    int count = 1;

    nodeType *ptr;
    ptr = list;

    while(ptr != NULL)
    {
    if(ptr->info.idNum == targetID)
    {
    return count;
    }
    count++;
    ptr = ptr->link;
    }

 }// end of locate the ID function
//=======================================================================
///-=-=-=-=-=-=-=-=-=-=-=-=-endOf-main=-=-=-=-=-=-=-=-=-=-=-=-=-=:-@

Edited by kortneycoles

2
Contributors
1
Reply
14
Views
3 Years
Discussion Span
Last Post by nataraja833
0

try

           // Function Prototypes
 void print(nodeType *nodeTypePtr);  // Function to print a LL

copy paste the error

Edited by nataraja833

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.