1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
#include <iostream>
#include <fstream>
#include <cstddef>
using namespace std;
struct node;
typedef node* link;
struct node
{
char name[30];
long ID;
link next;
};
typedef char element[30];
class list
{
private:
link head; // I think link referrs to the head in the prompt
int listsize;
public:
list();
//void facepalm
void fileopen(ifstream & sourcefile, char fname[20]); //fname[20] because it's a new array, otherwise it can be of variable size.
bool readfile(ifstream & sourcefile, char fname[], long &ID); // gets a name and checks to see if it's the end of the file
void headbuild(element, long & ID);
link nodebuild(element, long & ID);
void headnext(link);
void printlist();
void sortlist();
};
list set;
int main()
{
ifstream sourcefile;
set.fileopen(sourcefile, "a9.txt");
cout << "File I/O testing on" << endl;
element tempname;
long tempID;
if(!(set.readfile(sourcefile, tempname, tempID)))
{
cout << "list is empty" << endl;
return 0;
}
set.headbuild(tempname, tempID);
if(!(set.readfile(sourcefile, tempname, tempID)))
{
cout << "one item present" << endl;
return 0;
}
link tempnext = set.nodebuild(tempname, tempID);
set.headnext(tempnext);
link currnode = tempnext;
while(set.readfile(sourcefile, tempname, tempID))
{
tempnext = set.nodebuild(tempname, tempID);
currnode -> next = tempnext;
currnode = tempnext;
}
//list::printlist();
//link::sortlist();
return 0;
}
list::list()
{
list::head = NULL;
listsize = 0;
}
void list::fileopen(ifstream &sourcefile, char fname[20])
{
sourcefile.open(fname);
if (!sourcefile)
{
cout << "File does not exist" << endl;
return;
}
}
bool list::readfile(ifstream &sourcefile, element tempname, long &tempID)
{
char reader;
int count = 0;
sourcefile.get(reader);
if (!sourcefile)
{
return false;
}
while(reader != ' ')
{
cout << reader;
tempname[count] = reader;
sourcefile.get(reader);
}
sourcefile >> tempID;
cout << ' ' << tempID;
cout << endl;
return true;
}
void list::headbuild(element tempname, long &tempID)
{
set.head = new node;
set.head -> name = tempname;
set.head -> ID = tempID;
set.listsize++;
return;
}
link list::nodebuild(element tempname, long &tempID)
{
link templink = new node;
templink -> name = tempname;
templink -> ID = tempID;
set.listsize++;
return templink;
}
void list::headnext(link tempnext)
{
set.head -> next = tempnext;
}
| |