if (cont == 0) {
cout << "No existe el dato " << endl;
}
}
// Eliminar por posición del nodo
template<typename T>
void List<T>::del_by_position(int pos)
{
Node<T> *temp = m_head;
Node<T> *temp1 = temp->next;
if (pos < 1 || pos > m_num_nodes) {
cout << "Fuera de rango " << endl;
} else if (pos == 1) {
m_head = temp->next;
} else {
for (int i = 2; i <= pos; i++) {
if (i == pos) {
Node<T> *aux_node = temp1;
temp->next = temp1->next;
delete aux_node;
m_num_nodes--;
}
temp = temp->next;
temp1 = temp1->next;
}
}
}
// Llenar la Lista por teclado
template<typename T>
void List<T>::fill_by_user(int dim)
{
T ele;
for (int i = 0; i < dim; i++) {
cout << "Ingresa el elemento " << i + 1 << endl;
cin >> ele;
add_end(ele);
}
}
// Llenar la Lista aleatoriamente para enteros
template<typename T>
void List<T>::fill_random(int dim)
{
srand(time(NULL));
for (int i = 0; i < dim; i++) {
add_end(rand() % 100);
}
}
// Usado por el método intersección
template<typename T>
void insert_sort(T a[], int size)
{
T temp;
for (int i = 0; i < size; i++) {
for (int j = i-1; j>= 0 && a[j+1] < a[j]; j--) {
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
// Ordeno los vectores
insert_sort(v1, m_num_nodes);
insert_sort(v2, num_nodes_2);
// Índice del 1er vector (v1)
int v1_i = 0;
// Índice del 2do vector (v2)
int v2_i = 0;
// Mientras no haya terminado de recorrer ambas Lists
while (v1_i < m_num_nodes && v2_i < num_nodes_2) {
if (v1[v1_i] == v2[v2_i]) {
intersection_list.add_end(v1[v1_i]);
v1_i++;
v2_i++;
num_inter++;
} else if (v1[v1_i] < v2[v2_i]) {
v1_i++;
} else {
v2_i++;
}
}
// Solo si hay alguna intersección imprimo la nueva lista creada
if (num_inter > 0) {
cout << "Existen " << num_inter << " intersecciones " << endl;
intersection_list.print();
} else {
cout << "No hay intersección en ambas listas" << endl;
}
}
// Guardar una lista en un archivo
template<typename T>
void List<T>::save_file(string file)
{
Node<T> *temp = m_head;
ofstream out;
out.open(file.c_str());
if (!out.is_open()) {
cout << "No se puede guardar el archivo " << endl;
} else {
while (temp) {
out << temp->data;
out << " ";
temp = temp->next;
}
}
out.close();
}