#include #include #include using namespace std; class person{ public: string areanumber; string number; string familyname; string name; person* next; //bool operator>(const person & P) const; }; bool larger(person* P1, person* P2) { return ((P1->areanumber > P2->areanumber) or ((P1->areanumber == P2->areanumber) and (P1->number < P2->number)) or ((P1->areanumber == P2->areanumber) and (P1->number == P2->number) and (P1->familyname > P2->familyname)) or ((P1->areanumber == P2->areanumber) and (P1->number == P2->number) and (P1->familyname == P2->familyname) and (P1->name > P2->name))); } void put(person* item) { cout << item->name << " " << item->familyname << " : " << item->areanumber << "-" << item->number << endl; } int clist_length(person* clist) { int len = 0; if (clist != 0){ person* first = clist; person* iter = first->next; len++; while (iter != first){ iter = iter->next; len++; } } return len; } void clist_swap(person* clist) //swaps the following 2 elements in a circular list { person* element_to_swap = clist->next; person* temp = element_to_swap->next; clist->next = temp; element_to_swap->next = temp->next; temp->next = element_to_swap; } void clist_print(person* clist) { person* iter = clist->next; put(clist); while(iter != clist){ put(iter); iter = iter->next; } } void clist_sort(person* clist) { bool swapped = true; int len = clist_length(clist); int swap_pos; cout << "q?"; person* person_array[len-1]; person* iter = clist; person* temp; cout << "bleh"; for(int i = 0; i < len-2; i++){ person_array[i] = iter; iter = iter->next; } cout << "hej"; for(int i = len-2; (i>0) && swapped; i--){ for(int j = 0; jnext = clist; } void readfile(person* ptr) { ifstream input; input.open("telefonnr.txt"); int position[4]; string temp; person* iter = ptr; while (! input.eof()){ getline(input,temp); position[0] = temp.find(','); position[1] = temp.find(':'); position[2] = temp.find('-'); position[3] = temp.find(' ', position[3]); iter->familyname.assign(temp,0,position[0]); iter->name.assign(temp,position[0]+2,position[1]-position[0]-2); iter->areanumber.assign(temp,position[1]+1,position[2]-position[1]-1); iter->number.assign(temp,position[2]+1,position[3]-position[2]-1); if (input.eof()){ iter->next = ptr; break; } else{ iter->next = new person; iter = iter->next; } } } int main() { person* CL; person* iter; int CL_length; CL = new person; readfile(CL); CL_length = clist_length(CL); iter = CL; clist_print(CL); /*segmentation fault här utskrift här ger en utskrift, utskrift på första raden i clist_sort skrivs ej ut*/ clist_sort(CL); cout << "===SORTED===" << endl; clist_print(CL); return 0; }