Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Listas enlazadas - eliminar ocurrencias
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
/* Implementar una función que reciba una lista de números enteros y elimine todas las ocurrencias del número 5. Informar la cantidad de ocurrencias eliminadas. Se debe pasar una sola vez por cada uno de los elementos de la lista. */ #include <iostream> using namespace std; struct Nodo { int dato; Nodo *siguiente; }; Nodo* insertaAdelante(Nodo* inicio, Nodo* nuevo) { nuevo->siguiente = inicio; return nuevo; } Nodo* generarNodo(Nodo* inicio, int dato) { Nodo* nuevo; nuevo = new Nodo; nuevo->dato = dato; nuevo->siguiente = nullptr; inicio = insertaAdelante(inicio, nuevo); return inicio; } void imprimir_lista(Nodo* inicio) { for (Nodo* aux = inicio; aux != nullptr; aux = aux->siguiente) { cout << aux->dato << " "; } } int eliminaOcurrencias(Nodo* &inicio, int num) { int cantidad = 0; Nodo* a_eliminar; Nodo* aux=inicio; while (aux!=nullptr){ if (inicio->dato == num) { //Este es el caso en que el elemento a eliminar está al inicio de la lista a_eliminar = inicio; inicio = inicio->siguiente; aux = aux->siguiente; delete a_eliminar; cantidad++; } else { if (aux->siguiente!=nullptr && aux->siguiente->dato == num) { //Este es el caso en que el siguiente nodo se debe eliminar a_eliminar = aux->siguiente; aux->siguiente = aux->siguiente->siguiente; delete a_eliminar; cantidad++; } else { //El siguiente nodo no se debe eliminar o no hay siguiente, entonces avanzamos aux=aux->siguiente; } } } return cantidad; } int main() { Nodo* inicio = nullptr; //Genero lista con datos de ejemplo: inicio = generarNodo(inicio, 5); inicio = generarNodo(inicio, 8); inicio = generarNodo(inicio, 2); inicio = generarNodo(inicio, 5); inicio = generarNodo(inicio, 10); inicio = generarNodo(inicio, 5); inicio = generarNodo(inicio, 5); //Imprimo la lista original: imprimir_lista(inicio); cout << endl; //Elimino y muestro cuántos se eliminaron: cout << "Cantidad de ocurrencias eliminadas: " << eliminaOcurrencias(inicio, 5); cout << endl; //Imprimo la lista modificada: imprimir_lista(inicio); }
g++
Show compiler warnings
[
+
] Compiler args
[
+
]
Show input
Compilation time: 0.43 sec, absolute running time: 0.07 sec, cpu time: 0.02 sec, memory peak: 3 Mb, absolute service time: 0,51 sec
latest
|
history
5 5 10 5 2 8 5 Cantidad de ocurrencias eliminadas: 4 10 2 8