Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- using namespace std;
- struct elem
- {
- string name;
- string diploma;
- elem* next;
- };
- class table
- {
- private:
- int count = 0;
- elem* first;
- public:
- table()
- {
- first = nullptr;
- }
- void addElem(string nam, string diplom)
- {
- count++;
- if (count - 1 == 0)
- {
- first = new elem;
- first->name = nam;
- first->diploma = diplom;
- first->next = nullptr;
- }
- else
- {
- /* first->next = first;
- first = first->next->prev = new elem;
- first->name = nam;
- first->diploma = diplom;*/
- elem* newEl = new elem;
- newEl->name = nam;
- newEl->diploma = diplom;
- newEl->next = first;
- first = newEl;
- }
- }
- string getNextName(string searched)
- {
- elem* currentElem = first;
- string result = " ";
- while (currentElem)
- {
- if (currentElem->name == searched && currentElem->next != nullptr)
- {
- result = currentElem->next->name;
- return result;
- }
- currentElem = currentElem->next;
- }
- return result;
- }
- elem removeElem(string nam)
- {
- bool removed = false;
- elem result;
- elem* currentElem = first;
- elem* prevEl = first;
- while (currentElem!=nullptr)
- {
- if ((currentElem->name == nam) && (currentElem == first))
- {
- result = *currentElem;
- count--;
- first = currentElem->next;
- delete currentElem;
- removed = true;
- break;
- }
- else if (currentElem->name == nam)
- {
- result = *currentElem;
- count--;
- if (currentElem->next != nullptr)
- {
- prevEl->next = currentElem->next;
- }
- delete currentElem;
- removed = true;
- break;
- }
- else
- {
- prevEl = currentElem;
- currentElem = currentElem->next;
- }
- }
- if (!removed)
- {
- cout << "No such elemet" << endl;
- return result;
- }
- else
- {
- cout << nam << " removed" << endl;
- return result;
- }
- }
- string searchDiploma(string searched)
- {
- string result;
- elem* currentElem = first;
- bool search = false;
- while (currentElem)
- {
- if (currentElem->name == searched)
- {
- result = currentElem->diploma;
- search = true;
- break;
- }
- currentElem = currentElem->next;
- }
- if (!search)
- {
- cout << "No such element" << endl;
- }
- return result;
- }
- void outPut()
- {
- elem* currentElem = first;
- cout << endl;
- while (currentElem)
- {
- cout << currentElem->name << " " << currentElem->diploma << endl;
- currentElem = currentElem->next;
- }
- cout << endl;
- }
- void changeDiploma(string nam, string dipl)
- {
- elem* currentElem = first;
- bool change = false;
- while (currentElem)
- {
- if (currentElem->name == nam)
- {
- currentElem->diploma = dipl;
- change = true;
- break;
- }
- currentElem = currentElem->next;
- }
- if (!change)
- {
- cout << "No such element" << endl;
- }
- }
- /*void iterate(void(*pf))
- {
- elem* currentElem = first;
- while (currentElem != nullptr)
- {
- (currentElem->diploma);
- }
- }*/
- ~table()
- {
- if (count > 1)
- {
- elem* delEl;
- while (first->next)
- {
- delEl = first->next;
- first->next = first->next->next;
- delete delEl;
- }
- }
- delete first;
- }
- friend bool dynamicTest(int);
- friend bool removeTest();
- friend bool addTest();
- };
- bool addTest()
- {
- table tb;
- bool testResult = true;
- tb.addElem("Hugo", "LesMiserables");
- testResult &= (tb.first->name) == "Hugo";
- tb.addElem("EdgarPoe", "Raven");
- testResult &= (tb.first->name) == "EdgarPoe";
- testResult &= (tb.first->next->name) == "Hugo";
- return testResult;
- }
- bool removeTest()
- {
- table tb;
- bool testResult = true;
- tb.addElem("Hugo", "LesMiserables");
- tb.addElem("EdgarPoe", "Raven");
- tb.addElem("Jerome", "ThreeManInBoat");
- testResult &= tb.removeElem("EdgarPoe").name == "EdgarPoe";
- testResult &= tb.getNextName("Jerome") == "Hugo";
- testResult &= tb.removeElem("Jerome").name == "Jerome";
- testResult &= tb.getNextName("Hugo") == " ";
- return testResult;
- }
- bool changeDiplomaTest()
- {
- table tb;
- bool testResult = true;
- tb.addElem("Hugo", "LesMiserables");
- tb.addElem("EdgarPoe", "Raven");
- testResult &= tb.searchDiploma("EdgarPoe") == "Raven";
- tb.changeDiploma("EdgarPoe", "Lenore");
- testResult &= tb.searchDiploma("EdgarPoe") == "Lenore";
- return testResult;
- }
- /*void fun(string st)
- {
- st += "It";
- }
- bool iteratTast()
- {
- void (*pf)(string) = &fun;
- }*/
- void main()
- {
- cout << "Add test result: " << addTest() << endl;
- cout << "Remove test result: " << removeTest() << endl;
- cout << "Change diploma test result: " << changeDiplomaTest() << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement