data_structures::linked_list::list Class Reference
Collaboration diagram for data_structures::linked_list::list:
[legend]

## Public Member Functions

| list ()
bool | isEmpty ()
void | push_back (int new_elem)
void | push_front (int new_elem)
void | erase (int old_elem)
void | display ()
std::shared_ptr< link > | search (int find_elem)
void | reverse ()

## Private Attributes

std::shared_ptr< link > | first
| link before the actual first element
std::shared_ptr< link > | last
| last link on the list

## Detailed Description

A list class containing a sequence of links

## Constructor & Destructor Documentation

## list()

data_structures::linked_list::list::list | ( |  | ) |

inline

List constructor. Initializes the first and last link.

{
// Initialize the first link
first = std::make_shared<link>();
// Initialize the last link with the first link
last = nullptr;
}
data_structures::linked_list::list::first
std::shared_ptr< link > first
link before the actual first element
Definition: linked_list.cpp:83
data_structures::linked_list::list::last
std::shared_ptr< link > last
last link on the list
Definition: linked_list.cpp:84

## Member Function Documentation

## display()

void list::display | ( |  | ) |

function displays all the elements in the list

Returns
  'void'

{
if (isEmpty()) {
std::cout << "List is Empty!";
return;
}
std::shared_ptr<link> t = first;
while (t->succ() != nullptr) {
std::cout << t->succ()->val() << "\t";
t = t->succ();
}
}
std::cout
data_structures::linked_list::list::isEmpty
bool isEmpty()
Definition: linked_list.cpp:111
std::shared_ptr
Here is the call graph for this function:

## erase()

void list::erase | ( | int | old_elem | ) |

function erases old element from the list

Parameters

  old_elem | to be erased from the list

{
if (isEmpty()) {
std::cout << "List is Empty!";
return;
}
std::shared_ptr<link> t = first;
std::shared_ptr<link> to_be_removed = nullptr;
while (t != last && t->succ()->val() != old_elem) {
t = t->succ();
}
if (t == last) {
std::cout << "Element not found\n";
return;
}
to_be_removed = t->succ();
t->succ() = t->succ()->succ();
to_be_removed.reset();
if (t->succ() == nullptr) {
last = nullptr;
}
}
std::shared_ptr::reset
T reset(T... args)
Here is the call graph for this function:

## isEmpty()

bool list::isEmpty | ( |  | ) |

function checks if list is empty

Returns
  true if list is empty
  false if list is not empty

{
if (last == nullptr) {
return true;
} else {
return false;
}
}

## push_back()

void list::push_back | ( | int | new_elem | ) |

function adds new element to the end of the list

Parameters

  new_elem | to be added to the end of the list

{
if (isEmpty()) {
first->succ() = std::make_shared<link>(new_elem);
last = first->succ();
} else {
last->succ() = std::make_shared<link>(new_elem);
last = last->succ();
}
}
Here is the call graph for this function:

## push_front()

void list::push_front | ( | int | new_elem | ) |

function adds new element to the beginning of the list

Parameters

  new_elem | to be added to front of the list

{
if (isEmpty()) {
first->succ() = std::make_shared<link>(new_elem);
last = first->succ();
} else {
std::shared_ptr<link> t = std::make_shared<link>(new_elem);
t->succ() = first->succ();
first->succ() = t;
}
}
Here is the call graph for this function:

## search()

std::shared_ptr< link > list::search | ( | int | find_elem | ) |

function searchs for

Parameters

  find_elem | in the list
  find_elem | to be searched for in the list

{
if (isEmpty()) {
std::cout << "List is Empty!";
return nullptr;
}
std::shared_ptr<link> t = first;
while (t != last && t->succ()->val() != find_elem) {
t = t->succ();
}
if (t == last) {
std::cout << "Element not found\n";
return nullptr;
}
std::cout << "Element was found\n";
return t->succ();
}
Here is the call graph for this function:

The documentation for this class was generated from the following file:

- data_structures/linked_list.cpp