Algorithms_in_C++  1.0.0
Set of algorithms implemented in C++.
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< linksearch (int find_elem)
 
void reverse ()
 

Private Attributes

std::shared_ptr< linkfirst
 link before the actual first element
 
std::shared_ptr< linklast
 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.

89  {
90  // Initialize the first link
91  first = std::make_shared<link>();
92  // Initialize the last link with the first link
93  last = nullptr;
94  }

Member Function Documentation

◆ display()

void list::display ( )

function displays all the elements in the list

Returns
'void'
178  {
179  if (isEmpty()) {
180  std::cout << "List is Empty!";
181  return;
182  }
184  while (t->succ() != nullptr) {
185  std::cout << t->succ()->val() << "\t";
186  t = t->succ();
187  }
188 }
Here is the call graph for this function:

◆ erase()

void list::erase ( int  old_elem)

function erases old element from the list

Parameters
old_elemto be erased from the list
152  {
153  if (isEmpty()) {
154  std::cout << "List is Empty!";
155  return;
156  }
158  std::shared_ptr<link> to_be_removed = nullptr;
159  while (t != last && t->succ()->val() != old_elem) {
160  t = t->succ();
161  }
162  if (t == last) {
163  std::cout << "Element not found\n";
164  return;
165  }
166  to_be_removed = t->succ();
167  t->succ() = t->succ()->succ();
168  to_be_removed.reset();
169  if (t->succ() == nullptr) {
170  last = nullptr;
171  }
172 }
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
111  {
112  if (last == nullptr) {
113  return true;
114  } else {
115  return false;
116  }
117 }

◆ push_back()

void list::push_back ( int  new_elem)

function adds new element to the end of the list

Parameters
new_elemto be added to the end of the list
123  {
124  if (isEmpty()) {
125  first->succ() = std::make_shared<link>(new_elem);
126  last = first->succ();
127  } else {
128  last->succ() = std::make_shared<link>(new_elem);
129  last = last->succ();
130  }
131 }
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_elemto be added to front of the list
137  {
138  if (isEmpty()) {
139  first->succ() = std::make_shared<link>(new_elem);
140  last = first->succ();
141  } else {
142  std::shared_ptr<link> t = std::make_shared<link>(new_elem);
143  t->succ() = first->succ();
144  first->succ() = t;
145  }
146 }
Here is the call graph for this function:

◆ search()

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

function searchs for

Parameters
find_elemin the list
find_elemto be searched for in the list
194  {
195  if (isEmpty()) {
196  std::cout << "List is Empty!";
197  return nullptr;
198  }
200  while (t != last && t->succ()->val() != find_elem) {
201  t = t->succ();
202  }
203  if (t == last) {
204  std::cout << "Element not found\n";
205  return nullptr;
206  }
207  std::cout << "Element was found\n";
208  return t->succ();
209 }
Here is the call graph for this function:

The documentation for this class was generated from the following file:
std::shared_ptr
STL class.
data_structures::linked_list::list::last
std::shared_ptr< link > last
last link on the list
Definition: linked_list.cpp:84
std::shared_ptr::reset
T reset(T... args)
std::cout
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::isEmpty
bool isEmpty()
Definition: linked_list.cpp:111