Hey all,
I'm including my telephone linked list code.
I am having major problems trying to insert (or add)
my new node in the appropriate alphabetical order.
I tried to overload the > op to compare
the first letters of the names -enterd last,first.
but i keep crashing when the print function calls.
(I know the menu can look better, I am just trying to get func-tionality down first).
I suspect what I am trying to do by inserting alphabetically
will also have something to do with my searchfor function?
any comment on that would be helpful.
thanks very much!
Michele
Code:
#include<iostream>
using namespace std;
#define MAX 40
struct TeleEntry
{
char EntryName[40];
char EntryNumber[40];
bool TeleEntry::operator > (const char* &TeleEntryA) const
{
if (strcmp(this->EntryName, TeleEntryA) > 0)
{return true;}
else
{return false;}
}
TeleEntry* Next;
};
class ListofTeles
{
public:
ListofTeles();
int count();
TeleEntry* Head;
int Add(TeleEntry* Item);
TeleEntry *Retrieve(int pos);
bool Delete();
bool Delete(int pos);
void Print();
private:
int size;
};
//constructor__________________________________
ListofTeles::ListofTeles():size(0), Head(NULL)
{
}
//initialize count by size_____________________
int ListofTeles::count()
{
return size;
}
//ADD_____________________________________________
int ListofTeles::Add(TeleEntry *NewItem)
{
TeleEntry *Sample = new TeleEntry;
Sample = NewItem;
if (Head==NULL)
{
Head = Sample;
}//if
else
{
while((Sample->EntryName) > (Head->EntryName))
{
Head = Sample->Next;
}//while
Head = Sample;
}
return size++;
}//add
//ITEM RETRIEVAL__________________________________
TeleEntry *ListofTeles::Retrieve(int Position)
{
TeleEntry *Current = Head;
for (int i=0; i<Position && Current !=NULL; i++)
{
Current=Current->Next;
}
return Current;
}
//ITEM DELETION______________________________________
bool ListofTeles::Delete()
{
if (Head == NULL)
{
std::cout<<"The list is empty\n"<< endl;
return false;
}
else
{
TeleEntry *Current;
Current = Head->Next;
Head->Next=Current->Next;
size--;
return true;
}
}
//ITEM DELETION WITH ARGUEMENT__________________________
bool ListofTeles::Delete(int position)
{
if (Retrieve(position) == NULL)
return false;
else
{
Retrieve(position -1)->Next = Retrieve (position +1);
size--;
return true;
}
}
//PRINT LIST
void ListofTeles::Print()
{
cout << "Print Telephone List" << endl;
if (Head == NULL)
{
std::cout<<"The list is empty\n"<< endl;
}
else
{
TeleEntry *Current;
Current = Head;
while (Head!=NULL)
{
cout<<"\nName: "<<Current->EntryName << " " <<"Tele #: "<< Current->EntryNumber << endl;;
Current = Current->Next;
Head = Current;
}//while
}//else
}//Print
//___________________________________________________
int main()
{
ListofTeles *Teles= new ListofTeles();
TeleEntry *Tele;
char Name [MAX];
char Number[MAX];
bool b;
cout << "would you like to enter a name/number?"<< endl;
cout << "enter 1 for yes 0 for no" << endl;
cin >> b;
while(b==1){
cout << "Enter Name (Last,First) :"<< endl;
cin >> Name;
cout << "Enter Number :"<< endl;
cin >> Number;
Tele = new TeleEntry;
strcpy (Tele->EntryNumber, Number);
strcpy (Tele->EntryName, Name);
Teles->Add(Tele);
cout << "would you like to enter a name/number?"<< endl;
cout << "enter 1 for yes 0 for no" << endl;
cin >> b;
}
cout<<"Qty Telephone Numbers: " << Teles->count() << endl;
Teles->Print();
return 0;
}