Я опубликовал этот вопрос ранее, и в комментарии было предложено создать класс Link и другие предложения (хотя я не смог сделать их все). Я попытался это сделать, и теперь мой код по крайней мере компилируется, но ничего не печатается. Буду признателен за помощь.
Итак, мой проект - получить файл с именем "contacts.txt", прочитать данные и поместить данные в узел. Затем я помещаю этот узел в список. Я удаляю дубликаты и распечатываю полученный список. Я пытаюсь сначала прочитать данные и часть печати, но у меня проблемы с печатью моего списка.
Линия контакта выглядит следующим образом:
Angelina M. Pierre 212 555 1234
Мой код:
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <sstream>
using namespace std;
typedef int ElementType;
class Node
{
private:
ElementType first, mid, last, phone;
Node *next;
friend class List;
public:
/* Node(Element){
first = "";
mid = "";
last = "";
phone = "";
}; */
Node(ElementType f, ElementType mi, ElementType sur, ElementType ph){
first = f;
mid = mi;
last = sur;
phone = ph;
next = NULL;
};
Node* getNext()
{
return next;
}
void setFirst(ElementType firstName){
first = firstName;
}
ElementType getFirst()
{
return first;
}
void setMid(ElementType middleI){
mid = middleI;
}
ElementType getMid()
{
return mid;
}
void setLast(ElementType lastName){
last = lastName;
}
ElementType getLast()
{
return last;
}
void setPhone(ElementType phoneNum){
phone = phoneNum;
}
ElementType getPhone()
{
return phone;
}
void printNode(){
cout << first << " " << mid << "" << last << "" << phone;
}
};
typedef Node* NodePointer;
/*------------------------------------------------------*/
class List {
private:
Node* first;
public:
List(){
first = NULL;
}
NodePointer getFirst(){
return first;
};
/*--------------------------------------------------------*/
void insert(ElementType fir, ElementType midd, ElementType las, ElementType phon, NodePointer pos){
NodePointer pN;
if(pos == first){
pN = new Node(fir, midd, las, phon);
pN->next = pos;
first = pN;
}
else{
pN = new Node(fir, midd, las, phon);
pN->next = pos->next;
}
}
/*--------------------------------------------------------------*/
void remove(NodePointer pos){
NodePointer pN;
if(pos == NULL){
return;
}
else {
if(pos == first){
first = first->next;
delete pos;
}
else{
pN = first;
while(pN->next != pos){
pN = pN->next;
pN->next = pos->next;
delete pos;
}
}
}
}
//Accessor
//bool empty();
void printContactList(){
NodePointer pN;
for(pN = first; pN != NULL; pN = pN->next){
pN->printNode();
cout << endl;
}
}
friend void copyList (List &L, List &M);
};
void readData(){
List L;
//I had to do multiple ph (phone numbers) because when I would read it in, it would only take the first three numbers and not the entire phone number.
ElementType fi, mi, la, ph, ph1, ph2;
ifstream fin;
fin.open("C:\\Users\\owner\\Documents\\contacts.txt");
fin >> fi >> mi >>la >> ph >> ph1 >> ph2;
while(!fin.eof()){
L.insert(fi, mi, la, ph, L.getFirst());
fin >> fi >> mi >>la >> ph >> ph1 >> ph2;
//fin >> fi;
}
L.printContactList();
}
int main()
{
readData();
return 0;
}