C++ Sorted Structure Linked List -
i working on project import data text file linked list in order, output linked list. however, whenever output linked list, last entry in text file repeating on , over.
here structure:
struct account { int accountnumber; double balance; string firstname; string lastname; account * next; };
this function add node in list:
void insertaccountbyaccountnumber(account * & h, account * n) { if (h == null) { h = n; return; } if (h->accountnumber >= n->accountnumber) { n->next = h; h = n; return; } account * t1, *t2; t1 = h; t2 = h->next; while (t2 != null) { if (t2->accountnumber < n->accountnumber) { t1 = t2; t2 = t2->next; } else { n->next = t2; t1->next = n; return; } t1->next = n; } }
and here code create node text file:
account * head = null; account * currentaccount = new account; ifstream fin; fin.open("record.txt"); while (fin >> accountnumbercheck) { fin >> firstnamecheck; fin >> lastnamecheck; fin >> balancecheck; currentaccount->accountnumber = accountnumbercheck; currentaccount->firstname = firstnamecheck; currentaccount->lastname = lastnamecheck; currentaccount->balance = balancecheck; currentaccount->next = null; insertaccountbyaccountnumber(* & head, currentaccount); } showaccounts(head); fin.close();
as nathan mentioned need allocate additional memory each data entry create , add linked list. if need further improvement here one: don`t need additional '&' sign when passing pointer function since address head data. try:
account * head = null; ifstream fin; fin.open("record.txt"); while (fin >> accountnumbercheck) { fin >> firstnamecheck; fin >> lastnamecheck; fin >> balancecheck; account * currentaccount = new account; // allocate new memory location each data entry in heap currentaccount->accountnumber = accountnumbercheck; currentaccount->firstname = firstnamecheck; currentaccount->lastname = lastnamecheck; currentaccount->balance = balancecheck; currentaccount->next = null; insertaccountbyaccountnumber(head, currentaccount); } showaccounts(head); fin.close();
and of course function header be:
void insertaccountbyaccountnumber(account* h, account* n);
Comments
Post a Comment