Está en la página 1de 23

República Bolivariana de Venezuela

Ministerio del Poder Popular para la Educación Superior


Fundación “Misión Sucre”
Programa Nacional de Formación de Educadores
Aldea Universitaria “Mireya Vanegas”
Trayecto Informática 1-3
Caricuao UD-3 Caracas

TRABAJO ESCRITO
UNIDADES 11-12-13-14

Profesor: Alumno:
Rodolfo Caccamo Sonnelys Querales
Norys Blanco
Rafael González
José Díaz

Caracas, 25/05/2023
INTRODUCCION

El presente proyecto académico está dirigido a estudiar y comprender la forma


en cómo se trabaja con nodos en listas simplemente enlazadas. Para lo cual
se diseño y empleo una página web en donde se explican algunos ejemplos
de listas simplemente enlazadas, un puntero es una variable especial en la que
podemos guardar la dirección de memoria de otra variable. Se dice, entonces,
que el puntero “apunta” a la variable y podemos acceder al contenido de esa
variable (acceder y modificar) utilizando el puntero. Aparte tenemos que
cuando se implementa una clase es necesario preocuparse por elegir una
representación para los objetos de esa clase. Esta representación consiste en
un conjunto de variables de instancias que almacenarán todos los datos que
se requiere memorizar para poder realizar las operaciones, además es
necesario preocuparse por implementar las operaciones de las clases.
Unidad 11: Punteros

o Definición, declaración, operadores y operaciones

Un puntero es una variable que contiene la dirección de otra variable. También


podríamos decir que un puntero es una variable que representa la posición
(más que el valor) de otro dato, tal como una variable o un elemento de un
array.

Cuando una variable puntero es definida, el nombre de la variable debe ir


precedido de un asterisco (*). Este identifica que la variable es un puntero. Por
tanto, una declaración de puntero puede ser escrita en términos generales
como:

Ejemplo: Se muestran a continuación una serie de declaraciones y


asignaciones de punteros que nos pueden ayudar a comprender la esncia de
las variables dinámicas.

Dentro de una declaración de variable, una variable puntero puede ser


inicializada asignándole la dirección de otra variable. Hay que tener en cuenta
que la variable cuya dirección se asigna al puntero debe estar previamente
declarada en el programa. Veamos que las siguientes declaraciones son
equivalentes, sin embargo, es conveniente usar la segunda ya que es mucho
más clarificadora.

float u, v; /* 1 */
float u, v; /* 1*/ float *pv; /* 2 */
float *pv=&v; .............
pv=&v; /* 3 */

/* 1 */ declaración de variables en coma flotante.

/* 2 */ declaración de variables puntero.

/* 3 */ asignar la dirección de v a pv.


Ejemplo: Posteriormente mostramos una demostración de las distintas formas
en las que se nos puede presentar un puntero, así como los incrementos de
direcciones y de valores apuntados, teniendo en cuenta la precedencia de
operadores que se vio en el capítulo 2.

Ejemplo: Por último, para acabar este apartado pondremos un ejemplo sencillo
de variables puntero con una explicación gráfica, de la traza que se va
produciendo.

o Punteros y funciones

Un puntero de función es un tipo de datos cuyos valores oscilan entre los


nombres de procedimiento.

Las variables de este tipo aparecen en varios lenguajes de programación,


como C y Fortran. En Fortran, un argumento ficticio que aparece en una
sentencia EXTERNAL es un puntero de función. Fortran proporciona soporte
para el uso de punteros de función en contextos como el destino de una
sentencia de llamada o un argumento real de dicha sentencia.

Un puntero de función es una cantidad de palabra completa o de palabra doble


que es la dirección de un descriptor de función. El descriptor de función es un
objeto de 3 palabras o 3 palabras dobles. La primera palabra o de doble
palabra contiene la dirección del punto de entrada del procedimiento. El
segundo tiene la dirección de la TOC del módulo de objeto en el que está
enlazado el procedimiento. El tercero es el puntero de entorno para
procedimientos anidados (contenidos). Sólo hay un descriptor de función por
punto de entrada. Se enlaza en el mismo módulo de objeto que la función que
identifica si la función es externa. El descriptor tiene un nombre externo, que es
el mismo que el nombre de función, pero con una clase de almacenamiento
diferente que lo identifica de forma exclusiva. Este nombre de descriptor se
utiliza en todas las operaciones de importación o exportación.

o Punteros y estructuras

Podemos especificar igualmente una variable puntero que apunta a una


estructura. La utilización de dichas variables se emplea frecuentemente cuando
es necesario pasar la estructura por referencia a una función o cuando se
quiere hacer una reserva dinámica de memoria para una estructura en un
determinado momento de la ejecución del programa.

El operador que se emplea para acceder a los miembros de una estructura a


través de una variable puntero es el operador. La utilización de dicho operador
se realiza de acuerdo al siguiente formato:
Mostramos gráficamente la reserva de memoria que se realiza cuando un
puntero apunta a una estructura:

Ejemplo: A continuación, se presenta un problema sencillo en el que se realiza


una reserva de memoria de una estructura, con una posterior asignación de
valores a dicha reserva. Se declara igualmente una variable de ese tipo
estructura, que usaremos para darle valores (pers2), también es interesante
fijarse en la asignación: p2=&pers2.

Ejemplo: Pasamos una estructura a una función la cual nos sumará la cantidad
de dinero que tenemos en ahorrado, y la cantidad de dinero que tenemos en la
cuenta corriente (toda esta información permanece en una estructura), el
resultado de la suma será devuelto con return al programa principal.

Unidad 12: Listas Enlazadas

o Conceptos y clasificaciones

En informática, una lista enlazada es una estructura de datos esencial que


puede utilizarse para crear otras estructuras de datos. Está formada por una
serie de nodos que contienen campos de datos y referencias a otros nodos. La
ventaja de las listas enlazadas sobre los vectores convencionales es que el
orden de los elementos puede ser diferente al orden de almacenamiento. Hay
varios tipos de listas enlazadas y pueden implementarse en muchos lenguajes
de programación.
Una lista enlazada es un tipo de dato autor referenciado porque contiene un
puntero o enlace a otro dato del mismo tipo. Las listas enlazadas permiten la
inserción y eliminación de nodos en cualquier punto de la lista en tiempo
constante, pero no permiten el acceso aleatorio. Hay diferentes tipos de listas
enlazadas: simples, doblemente enlazadas, circulares y doblemente circulares.
Las listas enlazadas pueden implementarse en muchos lenguajes. Lenguajes
como Lisp, Scheme y Haskell tienen estructuras de datos ya construidas para
acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos
como C o C++ y Java también pueden crear listas enlazadas utilizando
referencias.

o Lista enlazada simple

Una lista enlazada simple es una estructura de datos que consiste en una serie
de nodos conectados entre sí. Cada nodo tiene un campo de enlace único que
lo conecta con el siguiente nodo de la lista. La variable de referencia apunta al
primer nodo de la lista y el último nodo tiene un enlace que contiene NULL para
indicar el final de la lista. Aunque comúnmente se llama “top” a la variable de
referencia, se puede llamar de cualquier manera.

o Lista doblemente enlazada

Una lista doblemente enlazada es una versión más avanzada de una lista
enlazada. Cada nodo tiene dos enlaces: uno que apunta al nodo anterior (o al
valor NULL si es el primer nodo) y otro que apunta al nodo siguiente (o al valor
NULL si es el último nodo). Existe una técnica llamada XOR-Linking que
permite implementar listas doblemente enlazadas en lenguajes de bajo nivel
utilizando una sola palabra para ambos enlaces, aunque esta técnica no se
utiliza comúnmente.

o Lista enlazada circular


Una lista enlazada circular es una estructura de datos en la que el primer y el
último nodo están conectados entre sí. Esto se puede hacer tanto para listas
enlazadas simples como para las doblemente enlazadas. Para recorrer una
lista enlazada circular, se puede empezar por cualquier nodo y seguir la lista en
cualquier dirección hasta volver al nodo original. Las listas enlazadas circulares
pueden ser vistas como listas sin principio ni fin y son comúnmente utilizadas
para manejar buffers de datos y para visitar todos los nodos de una lista a partir
de uno dado.

o Lista enlazada doblemente circulares

Una lista enlazada doblemente circular es similar a una lista doblemente


enlazada, pero con la diferencia de que el enlace anterior del primer nodo
apunta al último y el enlace siguiente del último nodo apunta al primero. Esto
permite realizar inserciones y eliminaciones desde cualquier punto de la lista si
se tiene acceso a un nodo cercano. Aunque una lista circular doblemente
enlazada no tiene un principio ni un fin definidos, se puede utilizar un puntero
externo para establecer el nodo que se considera la cabeza o la cola de la lista
y mantener el orden de la misma.

o Lista enlazada simple

En una lista enlazada circular simple, cada nodo está conectado a otro nodo a
través de un enlace. A diferencia de las listas enlazadas simples, el siguiente
nodo del último apunta al primero. Para insertar nuevos nodos de manera
eficiente, es necesario tener una referencia a un nodo existente. Por lo general,
se mantiene una referencia al último elemento de la lista para permitir
inserciones rápidas al principio y acceder fácilmente al primer nodo desde el
puntero del último nodo.

o Nodo Centinela

Las listas enlazadas pueden tener un nodo centinela al principio o al final de la


lista. Este nodo no se utiliza para almacenar datos, sino que su propósito es
simplificar o agilizar algunas operaciones. Al asegurar que cualquier nodo
tenga otro anterior o posterior, el nodo centinela permite que toda la lista,
incluso una que no contenga datos, siempre tenga un primer y último nodo.

o Colas

Una cola es una estructura de datos en la que el primer elemento en entrar es


el primero en salir. Esto se conoce como una estructura FIFO (First In, First
Out). Se puede pensar en una cola como una lista enlazada con acceso FIFO,
donde solo se puede agregar elementos al final de la lista y sacarlos desde el
principio.
o Pilas

Una pila es una estructura de datos en la que el último elemento en entrar es el


primero en salir. Esto se conoce como una estructura LIFO (Last In, First Out).
En una pila, solo se tiene acceso a la cima o cabeza de la estructura.

o Los operadores básicos de una lista enlazada son:

 Insertar: inserta un nodo con dato x en la lista, pudiendo realizarse esta


inserción al principio o final de la lista o bien en orden.
 Eliminar: elimina un nodo de la lista, puede ser según la posición o por el
dato.
 Buscar: busca un elemento en la lista.
 Localizar: obtiene la posición del nodo en la lista.
 Vaciar: borra todos los elementos de la lista

A continuación, una tabla con operadores más usados en GNOME


Unidad 13: Recursividad

o Fundamentos teóricos

La recursividad es una técnica de programación importante. Se utiliza para


realizar una llamada a una función desde la misma función. Como ejemplo útil
se puede presentar el cálculo de números factoriales. La factorial 0 es, por
definición 1. Las factoriales de números mayores se calculan mediante la
multiplicación 1*2 incrementando el número de 1 hasta llegar al número para el
que se está calculando la factorial.

La recursividad y la iteración (ejecución en bucle) están muy relacionadas,


cualquier acción que pueda realizarse con la recursividad puede realizarse con
interacción y viceversa. Normalmente, un cálculo determinado se prestará a
una técnica u otra, solo necesita elegir el enfoque más natural o con el que se
sienta más cómodo. Claramente, esta técnica puede construir un modo de
meterse en problemas. Es fácil crear una función recursiva que no llegue a
devolver nunca un resultado definitivo y no pueda llegar a un punto de
finalización. Este tipo de recursividad hace que el sistema ejecute lo que se
conoce como bucle “infinito”.

Funciones recursivas

Su principal utilidad se encuentra en la división de tareas. Es decir, las


funciones recursivas se emplean, generalmente para crear subtareas más
simples dentro del programa. Esto facilita el abordaje de la programación de
una forma mucho más flexible y sencilla.

Tipos de recursividad
Las funciones recursivas se clasifican en: recursividad directa: se llama así
mismo (método de recursividad simple) o n varias partes del programa
(recursividad múltiple).recursividad indirecta o mutua: dos métodos se llaman
entre sí.

Ámbito de aplicación, utilidad

El proceso de llamadas de recursivas siempre tiene que acabar en una


llamada a la función que se resuelve de manera directa, sin necesidad de
invocar de nuevo la función. Esto será siempre necesario, para que llegue un
momento que se corten las llamadas reiterativas a la función y no se entre en
un bucle infinito de invocaciones.

Quizás en la teoría cueste más ver lo que es una función recursiva que por
la práctica. Un ejemplo típico de recursividad seria la función factorial. La
factorial es una función matemática que se resuelve multiplicando ese número
por todos los números naturales que hay entre el y 1.

Por ejemplo, factorial de 4 es igual 4*3*2*1. Si nos fijamos, para el ejemplo


de factorial 4 (¡factorial se expresa matemáticamente con un signo de
admiración hacia abajo, como 4!), se puede resolver como 4*3! (4*factorial de
3). Es decir, podemos calcular la factorial de un numero multiplicado ese
número por factorial de ese número menos 1.

o Ventajas y desventajas de la recursividad

Ventajas:

1- Soluciones a problemas complejos de una manera fácil, simple y clara y


elegante.

2- no es necesario definir la secuencia de pasos exacta para resolver el


problema.

3- Podemos considerar que “tenemos resuelto el problema” (de menor


tamaño).

4- La eficiencia de la recursividad reside en el hecho de que se puede usar


para resolver problemas de difícil solución iterativa.

5- Algunos problemas son más sencillos de implementar usando la


recursividad.

6- Presenta una facilidad para comprobar y verificar que la solución es correcta.


Desventajas:

1- Ineficiencia

2- Sobrecarga asociada con las llamadas a subalgorítmicos.

3- Una simple llamada puede generar un gran número de llamadas recursivas.


(Fact(n) genera n llamadas recursivas).

4- Puede que la claridad del algoritmo no compense la sobrecarga del mismo.

5- Algoritmos recursivos ineficientes.

6- Es necesario la creación de muchas variables lo que puede ocasionar


problemas en memoria.

7- En general, una función recursiva toma más tiempo en generarse que una
iterativa.

8- Debido a las llamadas constantes a métodos, a la creación de variables


dinámicas en la pila y la duplicación de las variables.

o Diseños y escritura de programas recursivos

La modalidad de diseño recursivo requiere de todos los subgráficos se


diseñen en el mismo etilo. Por ejemplo, todos deben utilizar la misma dirección
del flujo. Esto se realiza automáticamente si no se especifican diseños
individuales por subgráfico.

Un algoritmo se dice que es recursivo cuando contiene en su definición una


o más llamadas a sí mismo.

Todo algoritmo recursivo, tendrá al menos una instrucción alternativa que


contemplará dos casos bien diferenciados:
- Caso directo (o caso base): es el caso en el cual el problema tiene una
solución directa. Es el último caso que se ejecuta en la recursión.
- Caso recursivo: es donde se relaciona el resultado del algoritmo con
resultados de casos más simple. Estos casos más simples
corresponderán con las llamadas recursivas.
La condición de la instrucción alternativa que selecciona el caso directo se
denomina condición de parada.

Ejemplo:

Factorial (n: natural) dev f: natural


Si n=0 entonces // condición de parada
f <-1 // caso base

Sino
f <- n *factorial (n – 1) // caso recursivo
fsi

Tipos de algoritmos recursivos:

Lineal

-Rec. Directa Múltiple

Anidada

Final
-Rec. Indirecta
No final

Un lenguaje de programación: es un lenguaje informático especialmente


diseñado para describir el conjunto de acciones consecutivas o instrucciones
que un equipo informático debe ejecutar.

Ejemplo:
PHP, Java, C++, Python.

La mayoría de los lenguajes de programación dan soporte a la recursión


permitiendo a una función llamarse a si misma desde el texto del programa.
Los leguajes imperativos definen las estructuras de loops While y for, que son
usadas para realizar tareas repetitivas. Algunos lenguajes de programación
funcionales no definen estructuras de loops sino que posibilitan la recursión
llamado código de forma repetitiva. La teoría de la computabilidad ha
demostrado que estos dos tipos de lenguaje son matemáticamente son
equivalentes, es decir que pueden resolver los mismos tipos de problemas,
aunque los lenguajes funcionales carezcan de las típicas estructuras.

Lista de lenguaje de programación:

- Lenguaje de programación C, C++ y C #


- Java
- Python
- PHP
- SQL
- Ruby
- Visual Basic. NET
- Lenguaje de programación R.

Características:
Programar viene a ser el proceso de crear un software fiable mediante la
escritura, prueba, depuración, compilación o interpretación y mantenimiento del
código fuente de dicho programa informático. Básicamente este proceso se
define aplicando lógicamente los siguientes pasos:
- Desarrollo lógico del programa para resolver un problema particular.
- Escritura de la lógica del programa empleando un lenguaje de
programación especifico (codificación del programa)
- Compilación o interpretación del programa hasta convertirlo en lenguaje
de máquina.
- Prueba y depuración del programa.
- Desarrollo de la documentación.

El lenguaje de programación permite especificar de manera precisa sobre


qué datos debe operar un software específico, como deben ser almacenados o
transmitidos dicho dato, y que acciones debe tomar el software bajo una gama
de circunstancias. Todo esto, a través de un lenguaje que intenta estar
relativamente próximo al lenguaje humano o natural.

Unidad 14: Introducción a las Estructuras de Datos


Dinámicas Avanzadas: Pilas, Colas y Arboles

o Definición, especificaciones y tipos

Introducción a las estructuras de datos:

Un algoritmo es una secuencia finita de operaciones, organizadas para realizar


una tarea determinada. Las estructuras de datos son la forma en que se
organizan los datos para ser usados. Puede ser una colección de variables,
posiblemente de diferentes tipos de datos, conectadas de un modo
determinado.
Una estructura de datos bien organizada debe permitir realizar un conjunto
de acciones sobre los datos de tal forma de minimizar el uso de los recursos y
el tiempo empleado para efectuar la operación.
Pilas
Es una lista ordinal o estructura de datos en la que el modo de acceso a sus
elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero
en salir) que permite almacenar y recuperar datos.
14-1

Historia

El método de pila para la evaluación de expresiones fue propuesta en 1955


y 2 años después patentado por Friedrich L. Bauer, quién recibió en 1988 el
premio IEEE. Computer Society Pionner Award por su trabajo en el desarrollo
de dicha estructura de datos.

Pila de llamada

Es un segmento de memoria que utiliza esta estructura de datos para


almacenar información sobre las llamadas a subrutinas actualmente en
ejecución en un programa en proceso.
Cada vez que una nueva subrutina es llamada, se apila una nueva entrada
con información sobre esta tal como sus variables locales. En especial, se
almacena aquí el punto de retorno al que regresar cuando esta subrutina
termine (para volver a la subrutina anterior y continuar su ejecución después de
esta llamada).

Como tipo abstracto de datos

La pila es un contenedor de nodos y tiene dos operaciones básicas, push (o


apilar) y pop (o desapilar). “Push” añade un nodo a la parte superior de la pila,
dejando por debajo el resto de los nodos. “Pop” elimina y devuelve el actual
nodo superior de la pila.
Operaciones con pilas
Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las
que en las implementaciones modernas de las pilas se suelen añadir más de
uso habitual.
14-2
Crear: se crea la pila vacía.
Apilar: se añade un elemento a la pila (push).
Desapilar: se elimina el elemento frontal de la pila (pop).
Cima: devuelve el elemento que está en la cima de la pila (top o peek).
Vacía: devuelve cierto si la pila está vacía o falso en caso contrario.

Colas

Es una estructura de datos lineal, es decir una colección de elementos en la


cual cada elemento tiene un sucesor y un predecesor únicos, con excepción
del primero y del último. La estructura cola se caracteriza porque las
operaciones de inserción y eliminación de elementos deben hacerse por
extremos diferentes.
El frente o principio de la cola será el extremo en el cual se eliminarán
elementos, mientras que al final será el extremo en el cual se harán las
inserciones.

Clasificación de Colas
Colas circulares
Es aquella en la cual el sucesor del último elemento es el primero.
Por lo tanto, el manejo de las colas como estructuras circulares permite un
mejor uso del espacio de memoria reservando para la implementación de las
pilas.
Colas dobles
Permiten realizar las operaciones de inserción y eliminación por cualquiera
de sus extremos.
Una cola doble también puede ser circular, en dicho caso, será necesario
que los métodos de inserción y eliminación (sobre cualquiera de los métodos
de inserción y eliminación (sobre cualquiera de los extremos) considere el
movimiento adecuado de los punteros.

Otros tipos:

Colas de Prioridad
En ellas, los elementos se atienden en el orden indicado por una prioridad
asociada a cada uno. Si varios elementos tienen la misma prioridad, se
atenderán de modo convencional según la posición que ocupen. Hay dos
formas de implementación.
Añadir un campo a cada nodo con su prioridad. Resulta conveniente
mantener la cola ordenada por orden de prioridad.
Crear tantas colas como prioridades haya, y almacenar cada elemento en
su cola.
Bicolas de entrada registrada: Son aquellas donde la inserción solo se hace por
el fina, aunque podemos eliminar al inicio o al final.
Bicolas de salida restringida: Son aquellas donde solo se elimina por el final,
aunque se puede insertar al inicio y al final.

Árboles y Características:
Los árboles son estructuras de datos no lineales.
Cada elemento conocido con el nombre de NODO.
Un árbol se define como una colección de nodos donde cada uno además
de almacenar información, guarda las direcciones de sus sucesores.
Se conoce la dirección de uno de los nodos, llamado raíz y a partir de él se
tiene acceso a todos los otros miembros de la estructura, grafos, anidación de
paréntesis y diagramas de ven.
Hijo: Es aquel nodo que siempre va a tener un nodo antecesor o padre, son
aquellos que se encuentran en el mismo nivel.
Padre: Es aquel que tiene hijos y también puede tener o no antecesores.
Hermano: Dos nodos son hermanos si son apuntados por el mismo nodo, es
decir si tienen el mismo padre.
Raíz: Es el nodo principal de un árbol y no tiene antecesores.
Hoja o terminal: Son aquellos nodos que no tienen hijos o también los nodos
finales de un árbol.
Interior: Se dice que un nodo es interior si no es raíz ni hoja.
Nivel de un nodo: Se dice que el nivel de un nodo es el número de arcos que
deben ser recorridos, partiendo de la raíz para llegar hasta él.
Altura del árbol: Se dice que la altura de un árbol es el máximo de los niveles
considerando todos sus nodos.
Grado de un nodo: se dice que el grado de un nodo es el número de hijos que
tiene dicho nodo.

Tipos de Arboles:

Arboles binarios: Son árboles donde cada nodo sólo puede apuntar a dos
nodos
Se define un árbol binario como un conjunto finito de elementos (nodos) que
bien está vacío o está formado por una raíz con dos árboles binarios disjuntos,
es decir, dos descendientes directos llamados subárbol izquierdo y subárbol
derecho.
Los árboles binarios (también llamados de grado 2) tienen una especial
importancia.
Las aplicaciones de los arboles binarios son muy variadas ya que se les
puede utilizar para representar una estructura en la cual es posible tomar
decisiones con dos opciones en distintos puntos.

14-11

Arboles Binarios De Búsqueda:


Son árboles binarios ordenados. Desde cada nodo todos los nodos de una
rama serán mayores, según la norma que se haya seguido para ordenar el
árbol, y los de la otra rama serán menores.
Los árboles binarios se utilizan frecuentemente para representar conjuntos
de datos cuyos elementos se identifican por una clave única. Si el árbol está
organizado de tal manera que la clave de cada nodo es mayor que todas las
claves su subárbol izquierdo, y menor que todas las claves del subárbol
derecho se dice que este árbol es un árbol binario de búsqueda.

14-12

Arboles- B:
Son árboles cuyos nodos pueden tener un número múltiple de hijos tal como
muestra el esquema.
CONCLUSIONES

De acuerdo a la forma de trabajo, y lo visto en este documento académico,


podemos concluir que: Las listas simplemente enlazadas, son posiblemente las
estructuras de datos más fáciles, rápidas y sencillas de estudiar, aprender y
entender. La resolución de una función relacionada con listas simplemente
enlazadas, es fácil y rápida, en especial porque no se requieren demasiadas
líneas de código, por ende, la solución es inmediata. El objetivo por el cual se
realizó la presente documentación de la Biblioteca de Estructuras de Datos
Avanzadas, fue la de establecer un material de apoyo y consulta para los
estudiantes de Ingeniería en Informática y de Sistemas o de cualquier otra área
afín, en la cual se imparta la materia de Estructura de Datos. Cada estructura
de datos ofrece ventajas y desventajas en relación a su simplicidad
y eficiencia para la realización de cada operación.
Bibliografía

https://ccia.ugr.es/~jfv/ed1/c/cdrom/cap8/cap82.htm#:~:text=Un%20puntero%20es%20una
%20variable,un%20elemento%20de%20un%20array.

https://www.ibm.com/docs/es/openxl-fortran-aix/17.1.0?topic=calls-pointers-function

https://ccia.ugr.es/~jfv/ed1/c/cdrom/cap8/cap811.htm

https://es.wikipedia.org/wiki/Lista_enlazada

https://www.technodyan.com/lista-simplemente-enlazada/
#Operaciones_basicas_de_la_lista_enlazada_simple_en_C

https://calcifer.org/documentos/librognome/glib-lists-queues.html

http://lesmarydavid.blogspot.com/2015/10/estructuras-de-datos-avanzadas-pilas.html
Anexo

También podría gustarte