C ++ lista doblemente enlazada

#include <stdio.h> 
#include <la iostream> 
#include <easyx.h> 
#include <la graphics.h> 
#include <Lista>
 // declarar doblemente enlazada lista de nodos 
struct Nodo 
{ 
    int X;
     int Y; 
    el Nodo * Siguiente;                                                 // definición de un puntero estructura al siguiente nodo del nodo actual; 
    el nodo * PREV;                                                 // definición de una estructura en un puntero al nodo actual; 
}; 

// lista doblemente enlazada declarar estructura de almacenamiento de puntero 
struct LinkList                                                 // bis estructura de lista enlazada; 
{ 
    el nodo* Head;                                                 // definir un puntero nodo principal; 
    el Nodo * cola;                                                 // nodo define el final de un puntero nodo hijo; 
    int tamaño;                                                 // definir una variable para contener el número de nodos en la lista doblemente enlazada; 
}; 

// 1. inicializar un bis nodo de lista; 
el nodo * la CreateNode ( int x, int Y)                                 // crear una lista doblemente enlazada de nodos secundarios; 
{ 
    el nodo * TEMP = (el nodo *) el malloc ( el sizeof (el nodo)); 
    TEMP -> x = x;                                             // la asignación x x a la estructura;
    TEMP-> = y y;                                             // y asignar a la estructura y;         
    TEMP-> la Siguiente = NULL;                                         // puntos de nodo delantero y trasero a una dirección de vacío; 
    TEMP-> prev = NULL;
     devolver la TEMP;                                             // serán creados la estructura de retorno; 
} 

// 2. enlace de dos nodos; 
void node_link (n1 * el nodo, el nodo * N2) 
{ 
    n1 -> siguiente = N2;                                             // a punto al siguiente nodo N1, N2 
    N2-> PREV = n1 ;                                             // a punto para el nodo N2, un N1 

} 

// 3. inicializado vaciar lista doblemente enlazada;
vacío   Linklist_init (Lista de enlaces * Lista) 
{ 
    Lista -> cabeza = NULL;                                     // puntero de cabeza es NULL; 
    lista-> cola = NULL;                                     // puntero de cola también es nula; 
    lista-> size = 0 ;                                         // definir variables para contener la el número de nodos en el nodo; 
} 

void push_head (lista lista de enlaces *, int X, int Y) 
{ 
    iF (lista-> tamaño == 0 ) // determina si el puntero de lista de cabeza doblemente enlazada es nulo, entonces el nuevo actual el primer nodo 
    { 
        Lista -> cabeza = la CreateNode (X, Y); 
        Lista-> = cola lista-> cabeza; // Desde se crea el primer nodo, a continuación, el primer nodo y un nodo está vacía; 
        lista-> size = 1 ;         // lista doblemente enlazada almacenada en el tamaño de los ganglios se convierte en 1; 
    }
     la otra cosa 
    { 
        el nodo * la TEMP CreateNode = (X, Y);   // crear una lista de nodos doblemente enlazada 
        node_link (TEMP, lista-> cabeza);   // lista doblemente enlazada porque el soporte de la cabeza, el nodo cuando el anterior paso de parámetros , lista después de la lista 
        lista-> cabeza = TEMP;    // cabeza del nodo de cabecera se convierte en TEMP 
        lista-> tamaño ++;         // número de bis lista de nodos hecho +1; 
    } 
} 

void   push_end (lista de enlaces lista *, int X, int Y) 
{ 
    SI (lista-> == tamaño0 ) 
    { 
        Lista -> cabeza = la CreateNode (X, Y); 
        Lista -> cola = lista-> cabeza; // Desde se crea el primer nodo, a continuación, el primer nodo y un nodo está vacía; 
        lista-> Tamaño = 1 ;         // lista doblemente enlazada almacenada en el tamaño de los ganglios se convierte en 1; 
    }
     la otra cosa 
    { 
        el nodo * TEMP = la CreateNode (X, Y); 
        node_link (lista -> cola, TEMP); // doble lista enlazada desde montado la cola , el nodo en la referencia de transmisión, la lista de la parte delantera 
        lista-> cola = TEMP;   // nodo original se convierte en el final de la lista TEMP 
        lista-> tamaño ++;        // número 1 doblemente enlazadas nodos lista; 
    } 

} 

// cabeza empieza a imprimir lista doblemente enlazada
* Print_list_head LinkList (LinkList * Lista) 
{ 
    SI (lista-> cabeza == NULL) de retorno Lista; 
    el Nodo * TEMP = lista-> cabeza;          // aplicación de un puntero al nodo principal de 
    ese tiempo (! TEMP = NULL) // determina la corriente si el nodo está vacía, si no se sale del bucle 
    { 
        el printf ( " % D% D-> " , TEMP-> X, TEMP-> Y); 
        temp = TEMP-> siguiente;   // el puntero a un nodo en la temp 
    } 
    el printf ( " NULL \ n " ); 
} 

vacío de prueba (* Lista de enlaces Lista) 
{ 

    el tiempo ( 1.) 
    { 
        Para (Nodo * temp = lista-> cabeza;! Temp = NULL; temp = TEMP-> siguiente) 
        { 
          
            
                printf ( " % d,% d-> " , TEMP-> x, TEMP-> y); 
               
        } 
        
        Para (Nodo * temp = lista-> cola; temp = NULL;! Temp = TEMP-> prev) 
        { 
            printf ( " % d,% d-> " , TEMP-> x, TEMP-> y); 
       
        } 
                
        Sleep ( 1000 ); 
      
    }       
 } 



// 从尾部向前打印双链表 
Lista de enlaces * print_list_end (Lista de enlaces * lista) 
{ 
    si (lista-> cabeza == NULL)retorno Lista;    // si el nodo principal está vacía, la lista doblemente enlazada es vaciar 
    el Nodo * TEMP = lista-> cola;   // definir un puntero de nodo para el puntero de cola nodo 
    al mismo tiempo (! TEMP = NULL)     // determina si el nodo actual está vacía 
    { 
         el printf ( " % D% D-> " , TEMP-> X, TEMP-> Y); 
         temp = TEMP-> PREV; // el puntero a un nodo en la temp 
    }; 
    el printf ( " NULL \ n- " ); 
} 

Lista de enlaces * free_someone (Lista de enlaces Lista *, int X, int Y) 
{ 


    retorno Lista; 


} 


int main ()
{ 
    Lista de enlaces * Lista1 = (Lista de enlaces *) el malloc ( el sizeof (Lista de enlaces));    // Solicitar dinámicamente una lista doblemente enlazada; 
    Linklist_init (Lista1); 
    
    para ( int I = 1. ; I < 10 ; I ++ ) 
    {       
       push_head (Lista1, I, I); 

    } 
    Prueba (Lista1); 



    retorno  0 ; 
}

 

Supongo que te gusta

Origin www.cnblogs.com/shenji/p/12526427.html
Recomendado
Clasificación