Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef LISTA_H
- #define LISTA_H
- #include <string>
- using namespace std;
- class Lista
- {
- private:
- class Node
- {
- friend class Lista;
- private:
- string text;
- Node *next;
- Node(string newString)
- {
- text = newString;
- next = NULL;
- }
- };
- Node *head;
- int length;
- public:
- Lista();
- Lista(string newString);
- Lista(const Lista&);
- ~Lista();
- void pushBack(string newString);
- void pushFront(string newString);
- void popBack();
- void popFront();
- int indexOf(string textToFind);
- int getLength();
- string getElementOfIndex(int index);
- void showAll();
- };
- #endif
- #include "lista.h"
- #include <string>
- #include <iostream>
- using namespace std;
- Lista::Lista()
- {
- length = 0;
- head = NULL;
- }
- Lista::Lista(string newString)
- {
- head = new Node(newString);
- length = 1;
- }
- Lista::Lista(const Lista &lis)
- {
- this->length = 0;
- this->head = NULL;
- Node *pointer = lis.head;
- while (pointer != NULL)
- {
- this->pushBack(pointer->text);
- pointer = pointer->next;
- }
- }
- Lista::~Lista()
- {
- while (length > 0) popFront();
- }
- void Lista::pushBack(string newString)
- {
- if (Lista::head == NULL)
- {
- head = new Node(newString);
- length++;
- }
- else
- {
- Node *pointer = head;
- while (pointer->next != NULL)
- {
- pointer = pointer->next;
- }
- (pointer->next) = new Node(newString);
- length++;
- }
- }
- void Lista::pushFront(string newString)
- {
- if (Lista::head == NULL)
- {
- head = new Node(newString);
- length++;
- }
- else
- {
- Node *pointer = new Node(newString);
- pointer->next = head;
- head = pointer;
- length++;
- }
- }
- void Lista::popBack()
- {
- if (head != NULL)
- {
- if (head->next == NULL)
- {
- delete head;
- head = NULL;
- length--;
- }
- else
- {
- Node *pointerLast = head;
- Node *pointerBefore = pointerLast;
- while (pointerLast->next != NULL)
- {
- pointerBefore = pointerLast;
- pointerLast = pointerLast->next;
- }
- pointerBefore->next = NULL;
- delete pointerLast;
- length--;
- }
- }
- }
- void Lista::popFront()
- {
- if (head != NULL)
- {
- Node *pointer = head->next;
- delete head;
- head = pointer;
- length--;
- }
- }
- int Lista::getLength()
- {
- return length;
- }
- string Lista::getElementOfIndex(int index)
- {
- if ( (index >= 0) && (index < length) )
- {
- Node *pointer = head;
- for (int i = 0; i < index; i++)
- {
- pointer = pointer->next;
- }
- return (pointer->text);
- }
- else return "Wrong Index!!!!!!!!!!!!!!!!!!!!!!";
- }
- int Lista::indexOf(string textToFind)
- {
- if (length == 0) return -1;
- else
- {
- Node *pointer = head;
- int i = -1;
- while (pointer != NULL)
- {
- i++;
- if ( (pointer->text).compare(textToFind) == 0 )
- {
- return i;
- }
- pointer = pointer->next;
- }
- return -1;
- }
- }
- void Lista::showAll()
- {
- Node *pointer = head;
- while (pointer != NULL)
- {
- cout << pointer->text << endl;
- pointer = pointer->next;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement