SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Repaso de Punteros en C++:
    A continuación se repasan brevemente los pasos a seguir para usar punteros en C++. En
    general, primero se define el tipo correspondiente, después se declaran las variables y se
    les pide memoria. Posteriormente se hace el uso que se quiera con ellas y cuando no se
    necesitan se borran para reaprovechar el espacio.

                                                          Ejemplo
      Paso
                             Tipos Básicos                            Estructuras
                                                      struct Tcomplex
                                                      {
                                                        double p_r;
                                                        double p_i;
                                                      };
                                                      typedef Tcomplex *TPComplex;

                    typedef int *TPInt;               ó
Definición del Tipo typedef char *TPChar;
                                                      typedef struct Tcomplex *TPComplex;
                                                      struct Tcomplex
                                                      {
                                                        double p_r;
                                                        double p_i;
                                                      };

  Declaración de    TPInt p_int;
                                                      TPComplex p_complex;
     varibles       TPChar p_char;
                    p_int = new(int);
                    p_char = new(char);               p_complex = new(Tcomplex);
    Petición de
   memoria (y       if((p_int == NULL) ||             if(p_complex == NULL)
 comprobación de       (p_char == NULL))              {
que la ha asignado) {                                   cout << “No hay memoria” << endl;
                      cout << “No memoria”;           }
                    }
   Acceso I:        *p_int = 7;
                                                      p_complex->p_r = 4.6;
   Modifición       cin >> *p_char;
   Acceso II:       cout << *pint;
                                                      parte_img = p_complex->p_i;
    Consulta        un_char = *p_char;
                    delete(p_int);
     Borrado        delete(p_char);
                                                      delete(p_complex);


    Listas Enlazadas en C++:

    Repaso breve sobre las listas enlazadas.

    Declaración del Tipo:

           typedef ... Tdatos;                   typedef ... Tdatos;

           struct Tnodo                          typedef struct Tnodo *Tlista;
           {                                     struct Tnodo
             Tdatos datos;                       {
             Tnodo *sig;                           Tdatos datos;
           };                                      Tnodo *sig;
           typedef Tnodo *Tlista;                };
Definición de la Variable:

                                                                     Basura
            Tlista primero;
                                                         primero

Inicialización de la Lista:

              Tlista crear()
              {
                 return NULL;                                         NULL
              }
              ...                                         primero
              primero = crear();

Insertar Ordenado:

   1. Crear Nodo a insertar

void insertar(Tlista &l, Tdato d)
{
      Tlista paux;
      paux = new(Tnodo);

        if(paux == NULL)
        {                                                            d          NULL
          cout << “ERROR”;
        }                                                paux
        else
        {
          paux->dato = d;
          paux->sig = NULL;
        }

   2. Si la lista es vacía introducimos al principio:

                                             NULL
        if( l == NULL )
        {                         l                        =>        l
           l = paux;
        }                                     d         NULL                    d       NULL

                               paux                              paux

   3. Si no es vacía comprobamos si hay que añadir al principio:

                                                  e       …                         e      …
        if( l.dato > d )
        {
           paux->sig = l;
                                       l                        =>         l
           l = paux;                              d       NULL                      d
        }
                                      paux                               paux
4. Insertamos en medio

                                                             a           b              e      …
/* Creamos un puntero auxiliar                     l
para buscar la posición donde
insertar */
pbusca = l;                                                                   d             NULL
                                              pbusca             paux
/* Recoremos la lista buscando                               a           b              e      …
donde insertar */
while( (pbusca->sig != NULL) &&                    l
       (pbusca->sig->datos < d))
{                                                                             d             NULL
   pbusca = pbusca->sig;
}                                             pbusca             paux
                                                             a           b              e      …
/* Una vez encontrada la posición                  l
insertamos el nuevo nodo */
paux->sig = pbusca->sig;
pbusca->sig = paux;                                                           d
                                              pbusca             paux

Borrar:

        Borrar es similar a la insertar. Primero se comprueba si es vacía, en tal caso no
hacemos nada. Si no está vacía buscamos el elemento que queramos borrar, y una vez
localizado, lo sacamos de la lista y liberamos la memoria que tenía asignada-

   1. Borrado del primer elemento

                              if(l->dato == d)
                              {
                                 ptr = l;
                                 l = l->sig;
                                 delete(ptr);
                              }


           d            e           ... =>              d            e            ...
  l                                            l



           ptr                                         ptr
2. Borrado de un elemento intermedio

/* Creamos dos punteros                  a      b      d   e   …
auxiliares uno que examine la
posición actual y otro que        l
indique la posición anterior
*/
pact = l->sig;
pant = l;                                pant   pact
/* Recoremos la lista
buscando el nodo a borrar*/              a      b      d   e   …
while((pact != NULL) &&
                                  l
      (pact->dato != d))
{
   pant = pact;
   pact = pact->sig;
}                                        pant   pact

/* Una vez encontrada la
posición borramos el nodo */             a      b      d   e   …
if(pact != NULL)
{
                                  l
  pant->sig = pact->sig;
  delete(pact);
}
                                         pant   pact

Más contenido relacionado

La actualidad más candente

Coloreo de grafos
Coloreo de grafosColoreo de grafos
Coloreo de grafos
Jorge
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
cemayoral
 
Archivos de Cabecera.
Archivos de Cabecera.Archivos de Cabecera.
Archivos de Cabecera.
Luis Stifler
 

La actualidad más candente (19)

Lenguajec++
Lenguajec++Lenguajec++
Lenguajec++
 
Coloreo de grafos
Coloreo de grafosColoreo de grafos
Coloreo de grafos
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Programación C++
Programación C++Programación C++
Programación C++
 
Codigos
CodigosCodigos
Codigos
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamiento
 
Clase2_Python-CTIC
Clase2_Python-CTICClase2_Python-CTIC
Clase2_Python-CTIC
 
Descubriendo scala
Descubriendo scalaDescubriendo scala
Descubriendo scala
 
Semana 6 Módulos en Python Entrega 1
Semana 6   Módulos en Python Entrega 1Semana 6   Módulos en Python Entrega 1
Semana 6 Módulos en Python Entrega 1
 
Semana 3 Fundamentos de Python(Funciones y Métodos)
Semana 3   Fundamentos de Python(Funciones y Métodos)Semana 3   Fundamentos de Python(Funciones y Métodos)
Semana 3 Fundamentos de Python(Funciones y Métodos)
 
Estructuras dinámicas de datos
Estructuras dinámicas de datosEstructuras dinámicas de datos
Estructuras dinámicas de datos
 
Programando con Python
Programando con PythonProgramando con Python
Programando con Python
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
Python02
Python02Python02
Python02
 
Strpbrk
StrpbrkStrpbrk
Strpbrk
 
01 el lenguaje Python
01 el lenguaje Python01 el lenguaje Python
01 el lenguaje Python
 
Archivos de Cabecera.
Archivos de Cabecera.Archivos de Cabecera.
Archivos de Cabecera.
 
Python04
Python04Python04
Python04
 

Destacado

PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
die_dex
 
12 Interseccion, Paralelismo, Perpendicularidad, Distancias
12 Interseccion, Paralelismo, Perpendicularidad, Distancias12 Interseccion, Paralelismo, Perpendicularidad, Distancias
12 Interseccion, Paralelismo, Perpendicularidad, Distancias
dibujotecnicoin
 
Minima distancia entre un punto y un plano
Minima distancia entre un punto y un planoMinima distancia entre un punto y un plano
Minima distancia entre un punto y un plano
Gonzalo Ramírez Gómez
 
Distancia mas corta entre un punto y una línea
Distancia mas corta entre un  punto y una líneaDistancia mas corta entre un  punto y una línea
Distancia mas corta entre un punto y una línea
Boris Cabrera
 
Insercion directa
Insercion directaInsercion directa
Insercion directa
abelpit2
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
die_dex
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
Karina Arguedas Ruelas
 
Tema 8. diedrico directo metodos
Tema 8. diedrico directo metodosTema 8. diedrico directo metodos
Tema 8. diedrico directo metodos
GARBIÑE LARRALDE
 

Destacado (20)

PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
estructuras de control
estructuras de control   estructuras de control
estructuras de control
 
Pres martin-c++
Pres martin-c++Pres martin-c++
Pres martin-c++
 
12 Interseccion, Paralelismo, Perpendicularidad, Distancias
12 Interseccion, Paralelismo, Perpendicularidad, Distancias12 Interseccion, Paralelismo, Perpendicularidad, Distancias
12 Interseccion, Paralelismo, Perpendicularidad, Distancias
 
Tema 8 s. diédrico II
Tema 8 s. diédrico IITema 8 s. diédrico II
Tema 8 s. diédrico II
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
Intersección de planos
Intersección de planosIntersección de planos
Intersección de planos
 
Minima distancia entre un punto y un plano
Minima distancia entre un punto y un planoMinima distancia entre un punto y un plano
Minima distancia entre un punto y un plano
 
Método de ordenamiento shell
Método de ordenamiento shellMétodo de ordenamiento shell
Método de ordenamiento shell
 
Distancia mas corta entre un punto y una línea
Distancia mas corta entre un  punto y una líneaDistancia mas corta entre un  punto y una línea
Distancia mas corta entre un punto y una línea
 
Geometría Descriptiva. Intersecciones
Geometría Descriptiva. InterseccionesGeometría Descriptiva. Intersecciones
Geometría Descriptiva. Intersecciones
 
Insercion directa
Insercion directaInsercion directa
Insercion directa
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
Ordenamiento parte 3
Ordenamiento parte 3Ordenamiento parte 3
Ordenamiento parte 3
 
Perpendicularidad y paralelismo en el S. Diédrico
Perpendicularidad y paralelismo en el S. DiédricoPerpendicularidad y paralelismo en el S. Diédrico
Perpendicularidad y paralelismo en el S. Diédrico
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
 
Ordenamiento burbuja
Ordenamiento burbujaOrdenamiento burbuja
Ordenamiento burbuja
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en C
 
Geometría Descriptiva I - Intersección de dos planos cualesquiera
Geometría Descriptiva I - Intersección de dos planos cualesquieraGeometría Descriptiva I - Intersección de dos planos cualesquiera
Geometría Descriptiva I - Intersección de dos planos cualesquiera
 
Tema 8. diedrico directo metodos
Tema 8. diedrico directo metodosTema 8. diedrico directo metodos
Tema 8. diedrico directo metodos
 

Similar a Resumen punteros1

ED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejerciciosED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejercicios
A J
 
Lista enlazada 2 parcial
Lista enlazada 2 parcialLista enlazada 2 parcial
Lista enlazada 2 parcial
Cerdorock
 
Colas 2do ejercicio
Colas 2do ejercicioColas 2do ejercicio
Colas 2do ejercicio
Cerdorock
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
die_dex
 

Similar a Resumen punteros1 (20)

Estructura de datos I Primera Parte
Estructura de datos I Primera ParteEstructura de datos I Primera Parte
Estructura de datos I Primera Parte
 
ED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejerciciosED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejercicios
 
Lista doblemente enlazada
Lista doblemente enlazadaLista doblemente enlazada
Lista doblemente enlazada
 
Tipos de Datos Abstractos (TDA)
Tipos de Datos Abstractos (TDA)Tipos de Datos Abstractos (TDA)
Tipos de Datos Abstractos (TDA)
 
Punteros2
Punteros2Punteros2
Punteros2
 
Lista enlazada 2 parcial
Lista enlazada 2 parcialLista enlazada 2 parcial
Lista enlazada 2 parcial
 
Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Colas 2do ejercicio
Colas 2do ejercicioColas 2do ejercicio
Colas 2do ejercicio
 
informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento- informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento-
 
6-Pilas.pdf
6-Pilas.pdf6-Pilas.pdf
6-Pilas.pdf
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Pract met de la program templa
Pract met de la program templaPract met de la program templa
Pract met de la program templa
 
Ejercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectoresEjercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectores
 
Solucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectoresSolucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectores
 
Parte 15
Parte 15Parte 15
Parte 15
 
Lecture 37
Lecture 37Lecture 37
Lecture 37
 
Informe Final Del Proyecto Poo
Informe Final Del Proyecto PooInforme Final Del Proyecto Poo
Informe Final Del Proyecto Poo
 

Más de Aldo Hernán Zanabria Gálvez

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
Aldo Hernán Zanabria Gálvez
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Aldo Hernán Zanabria Gálvez
 

Más de Aldo Hernán Zanabria Gálvez (20)

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
 
mejorando la web guia de html 5
mejorando la web guia de html 5mejorando la web guia de html 5
mejorando la web guia de html 5
 
Guía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdfGuía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdf
 
emprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptxemprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptx
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
 
didactica
didacticadidactica
didactica
 
Tarea1 aldo zanabria
Tarea1 aldo zanabriaTarea1 aldo zanabria
Tarea1 aldo zanabria
 
Tarea 2 aldo zanabria
Tarea 2 aldo zanabriaTarea 2 aldo zanabria
Tarea 2 aldo zanabria
 
Carolinos del milenio pasado - Puno
Carolinos del milenio pasado - PunoCarolinos del milenio pasado - Puno
Carolinos del milenio pasado - Puno
 
ingenieria de sistemas
ingenieria de sistemasingenieria de sistemas
ingenieria de sistemas
 
Electricidad con recursos renovables
Electricidad con recursos renovablesElectricidad con recursos renovables
Electricidad con recursos renovables
 
Variables
VariablesVariables
Variables
 
Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal
 
Calidad de Agua
Calidad de AguaCalidad de Agua
Calidad de Agua
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede Turismo
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y Comunicaciones
 
Plan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la MujerPlan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la Mujer
 
peritaciones y tasación puno
peritaciones y tasación punoperitaciones y tasación puno
peritaciones y tasación puno
 
producción en la empresa turística
producción en la empresa turísticaproducción en la empresa turística
producción en la empresa turística
 

Resumen punteros1

  • 1. Repaso de Punteros en C++: A continuación se repasan brevemente los pasos a seguir para usar punteros en C++. En general, primero se define el tipo correspondiente, después se declaran las variables y se les pide memoria. Posteriormente se hace el uso que se quiera con ellas y cuando no se necesitan se borran para reaprovechar el espacio. Ejemplo Paso Tipos Básicos Estructuras struct Tcomplex { double p_r; double p_i; }; typedef Tcomplex *TPComplex; typedef int *TPInt; ó Definición del Tipo typedef char *TPChar; typedef struct Tcomplex *TPComplex; struct Tcomplex { double p_r; double p_i; }; Declaración de TPInt p_int; TPComplex p_complex; varibles TPChar p_char; p_int = new(int); p_char = new(char); p_complex = new(Tcomplex); Petición de memoria (y if((p_int == NULL) || if(p_complex == NULL) comprobación de (p_char == NULL)) { que la ha asignado) { cout << “No hay memoria” << endl; cout << “No memoria”; } } Acceso I: *p_int = 7; p_complex->p_r = 4.6; Modifición cin >> *p_char; Acceso II: cout << *pint; parte_img = p_complex->p_i; Consulta un_char = *p_char; delete(p_int); Borrado delete(p_char); delete(p_complex); Listas Enlazadas en C++: Repaso breve sobre las listas enlazadas. Declaración del Tipo: typedef ... Tdatos; typedef ... Tdatos; struct Tnodo typedef struct Tnodo *Tlista; { struct Tnodo Tdatos datos; { Tnodo *sig; Tdatos datos; }; Tnodo *sig; typedef Tnodo *Tlista; };
  • 2. Definición de la Variable: Basura Tlista primero; primero Inicialización de la Lista: Tlista crear() { return NULL; NULL } ... primero primero = crear(); Insertar Ordenado: 1. Crear Nodo a insertar void insertar(Tlista &l, Tdato d) { Tlista paux; paux = new(Tnodo); if(paux == NULL) { d NULL cout << “ERROR”; } paux else { paux->dato = d; paux->sig = NULL; } 2. Si la lista es vacía introducimos al principio: NULL if( l == NULL ) { l => l l = paux; } d NULL d NULL paux paux 3. Si no es vacía comprobamos si hay que añadir al principio: e … e … if( l.dato > d ) { paux->sig = l; l => l l = paux; d NULL d } paux paux
  • 3. 4. Insertamos en medio a b e … /* Creamos un puntero auxiliar l para buscar la posición donde insertar */ pbusca = l; d NULL pbusca paux /* Recoremos la lista buscando a b e … donde insertar */ while( (pbusca->sig != NULL) && l (pbusca->sig->datos < d)) { d NULL pbusca = pbusca->sig; } pbusca paux a b e … /* Una vez encontrada la posición l insertamos el nuevo nodo */ paux->sig = pbusca->sig; pbusca->sig = paux; d pbusca paux Borrar: Borrar es similar a la insertar. Primero se comprueba si es vacía, en tal caso no hacemos nada. Si no está vacía buscamos el elemento que queramos borrar, y una vez localizado, lo sacamos de la lista y liberamos la memoria que tenía asignada- 1. Borrado del primer elemento if(l->dato == d) { ptr = l; l = l->sig; delete(ptr); } d e ... => d e ... l l ptr ptr
  • 4. 2. Borrado de un elemento intermedio /* Creamos dos punteros a b d e … auxiliares uno que examine la posición actual y otro que l indique la posición anterior */ pact = l->sig; pant = l; pant pact /* Recoremos la lista buscando el nodo a borrar*/ a b d e … while((pact != NULL) && l (pact->dato != d)) { pant = pact; pact = pact->sig; } pant pact /* Una vez encontrada la posición borramos el nodo */ a b d e … if(pact != NULL) { l pant->sig = pact->sig; delete(pact); } pant pact