I've spent pretty much all day trying to do this, I understand pointers and what a linked list does, but I don't know how to actually code it and all I've found are Java and C examples which don't help because I'm using C++. Thanks in advance for taking a look at my code and helping me, I really appreciate it considering how many days I've spent stressed out and confused about this. I'm not going to lie so far most of my deleteNode function is probably trash. But like I've said I'm just lost I don't even know where to start or how to progress because I only understand the concepts.
This is my data file.
John Doe    80
Jane Smith  70
Bill Jones  50
Pat  Hughes 90
Sam  Sosa   40
This is my Header file
#include<string>
using namespace std;
class student {
public:
    student();   // constructor method
    void st_fn(string fn);
    string st_fn();
    void st_ln(string ln);
    string st_ln();
    void st_score(float s);
    float st_score();
    string st_pass_or_fail();
    // need a pointer to the next object
    student *nxt_ptr;
protected:   // protected can be inherited
    float m_score;
    string m_ln;
    string m_fn;
    string m_pf_msg;
};
student::student()  //constructor
{
    nxt_ptr = NULL;
    m_score = 0;
}
void student::st_fn(string fn)
{
    m_fn = fn;
}
string student::st_fn()
{
    return m_fn;
}
void student::st_ln(string ln)
{
    m_ln = ln;
}
string student::st_ln()
{
    return m_ln;
}
void student::st_score(float s)
{
    m_score = s;
}
float student::st_score()
{
    return m_score;
}
string student::st_pass_or_fail()
{
    if (m_score >= 60)
        m_pf_msg = "PASSED";
    else
        m_pf_msg = "FAILED";
    return m_pf_msg;
}
This is my .cpp file.
#include<iostream>
#include<string>
#include<fstream>
#include "Header.h"
using namespace std;
int display_menu()
{
    int option;
    cout << endl << endl;
    cout << "1. Display List" << endl;
    cout << "2. Add a student" << endl;
    cout << "3. Delete first student" << endl;
    cout << "4. Search by Last Name" << endl;
    cout << "5. Exit" << endl;
    cin >> option;
    return option;
}
student * search_last_name(student *h)
{
    student *f = NULL;
    student *t = NULL;
    string s_ln;
    // prompt for last name to search for
    cout << "Enter Last Name of the Student";
    cin >> s_ln;
    if (h != NULL)
    {
        t = h;
        while (t != NULL)
        {
            if (t->st_ln() == s_ln)
                f = t;   // found the last name so save t
            t = t->nxt_ptr;
        }
    }
    else
        cout << "List is empty" << endl;
    return f;
}
void add_student(student *&head)  // h is the head of the list
{
    student *new_st, *r;
    string fn, ln;
    float s;
    cout << "Enter new students first name, last name and score";
    cin >> fn >> ln >> s;
    // instantiate a new node, use new_st
    new_st = new student;
    new_st->st_fn(fn);
    new_st->st_ln(ln);
    new_st->st_score(s);
    if (head == NULL)
        head = new_st;
    else
    {
        // find the last node, use r for this
        // write code
        r = head;
        while (r->nxt_ptr != nullptr)
            r = r->nxt_ptr;
        // add to the back of the list
        // write code
        r->nxt_ptr = new_st;
    } // end of else
} // end of add student
student * delete_front(student * head)
{
    student *t;
    // delete front node
    // check for empty list
    if (head != NULL)
    {
        // delete first node
        t = head;
        head = head->nxt_ptr;
        delete(t);
    }
    else
        cout << "List is empty - nothing to delete" << endl;
    return head;
}
void deleteNode(struct Node *head, struct Node *n)
{
    // When node to be deleted is head node
    if (head == n)
    {
        n = head->next;
        //Remove the link of next node
        head->next = head->next->next;
        return;
    }
    //When not first node, folow the  normal deletion process
    //Find the previous node
    struct Node *prev = head;
    while (prev->next != NULL && prev->next != n)
        prev = prev->next;
    // Check if node really exists in Linked List
    if (prev->next == NULL)
    {
        cout << endl << "Given node is not present in Linked List";
        return;
    }
    //Remove node from linked list should it exist
    prev->next = prev->next->next;
    return;
}
void display_list(student *t)
{
    if (t == NULL)
        cout << "List is Empty!";
    else
    {
        while (t != NULL)
        {
            cout << "******Student******" << endl;
            cout << t->st_ln() << endl;
            cout << t->st_fn() << endl;
            cout << t->st_score() << endl << endl;
            t = t->nxt_ptr;
        }
    }
}
int main()
{
    string ln, fn;
    float s;
    int n;
    ifstream infile;
    student *head = NULL;   //pointer to a student object
    student *cp = NULL;     // pointer to end of the list
    student *new_st = NULL;  // pointer to a new student object
    student *f = NULL;      // pointer to found node
    int option;  // the numbe of menu item the user selects
    infile.open("lab8d.txt");
    while (!infile.eof())
    {
        infile >> fn >> ln >> s;
        //instantiate a student object
        new_st = new student;
        //load the object with data
        new_st->st_fn(fn);
        new_st->st_ln(ln);
        new_st->st_score(s);
        // check for empty list - its a special case
        if (head == NULL)
        {
            head = new_st;
            cp = new_st;
        }
        else   // list is not empty
        {
            cp->nxt_ptr = new_st;
            cp = new_st;
        }
    }  // end of loop
       // loop to give the user some options
    option = display_menu();
    while (option != 5)
    {
        if (option == 1)
            display_list(head);
        else if (option == 2)
            add_student(head);
        else if (option == 3)
            head = delete_front(head);
        else if (option == 4)
        {
            f = search_last_name(head);
            if (f != NULL)
            {
                cout << f->st_fn() << endl;
                cout << f->st_ln() << endl;
                cout << f->st_score() << endl;
                cout << f->st_pass_or_fail() << endl;
            }
            else
                cout << "Name not in the list" << endl;
        }
        else if (option == 6)
        {
            cout << "Enter the number of the node you would like to delete: " << endl;
            cin >> n;
        }
        option = display_menu();
    }
    system("pause");
    return 0;
}
 
    