Notas de clase: lista de secuencia, lista individualmente vinculada

La definición de una lista lineal (Lista lineal) es una secuencia finita de cero o más elementos de datos del mismo tipo. El número de elementos de datos se define como la longitud de la tabla lineal. Cuando la longitud es igual a cero, se llama una tabla vacía. Una tabla no vacía generalmente se escribe como L = (a 1, a 2, ..., an), donde ai (1 ≤ i ≤ n) se llama un elemento de datos, y el subíndice i indica el elemento En la posición o número de secuencia en la tabla lineal, se dice que el elemento ai está en la posición i-ésima de la tabla, o ai es el elemento i-ésimo de la tabla.
Estructura de almacenamiento secuencial de la tabla lineal: características de la tabla secuencial: El almacenamiento secuencial de la tabla lineal se refiere al almacenamiento secuencial de cada elemento en la tabla lineal con un grupo de unidades de almacenamiento de direcciones consecutivas.
Función: los elementos de datos adyacentes en la estructura lógica de la tabla lineal se almacenan en la unidad de almacenamiento físico adyacente, es decir, la relación lógicamente adyacente entre los elementos de datos se refleja en la relación adyacente del almacenamiento físico del elemento de datos.
Implementación de almacenamiento secuencial: las matrices unidimensionales almacenan datos en tablas secuenciales.
Características de la tabla de secuencia Las
ventajas de la representación de secuencia de tabla lineal son: (1) No es necesario agregar espacio de almacenamiento adicional para representar la relación lógica entre nodos (porque los elementos lógicamente adyacentes se almacenan en ubicaciones físicas adyacentes); 2) Se puede acceder fácilmente a cualquier elemento de la tabla de forma aleatoria.
Desventajas de la representación lineal del orden de la tabla: (1) Las operaciones de inserción o eliminación son inconvenientes. Excepto por la posición de la cola de la tabla, las operaciones de inserción o eliminación en otras posiciones de la tabla deben mover una gran cantidad de nodos, y su eficiencia es baja; (2 ) Dado que la tabla de secuencia requiere espacio de almacenamiento continuo, la asignación de almacenamiento solo se puede realizar por adelantado mediante la asignación estática, por lo tanto, cuando la longitud de la tabla cambia mucho, es difícil determinar el tamaño de almacenamiento adecuado.
Estructura
de almacenamiento en cadena e implementación de la tabla lineal Las características de la asignación de almacenamiento en cadena: solicitan dinámicamente el espacio de almacenamiento de acuerdo con la longitud de la tabla lineal para resolver el problema de dificultad para determinar el espacio de almacenamiento en el almacenamiento secuencial.
La realización de la estructura de almacenamiento en cadena: lista enlazada única, lista doblemente enlazada, lista enlazada circular, etc.
Las características de las variables de puntero:
los tres elementos de la variable: nombre, dirección de memoria, valor.
El valor y el valor de la variable El valor se
refiere a la dirección de memoria de la variable, valor: valor.
El valor r de la variable puntero en sí es un valor l. Nodo principal de
lista enlazada
con nodo principal: si la lista vinculada tiene un nodo principal, el primer nodo en la estructura de la cadena se llama nodo principal: su campo de datos puede almacenar información adicional, como la longitud de la lista vinculada; su campo de puntero apunta a la lista vinculada El primer nodo.
Construcción de interpolación de encabezado de lista enlazada individualmente

template <class T>  
LinkList<T>:: LinkList(T a[ ], int n) 
{
    first=new Node<T>; 
    first->next=NULL;   
    Node<T> *s;   
    for(int i=0;i<n;i++){
        s=new Node<T>;           
        s->data=a[i];       
        s->next=first->next;          
        first->next=s;
    }
}

Construcción de interpolación de cola de lista enlazada única

template <class T>  
LinkList<T>:: LinkList(T a[ ], int n) {
    Node<T> *r,*s; 
    first=new Node<T>; 
    r=first;              
    for(int i=0;i<n;i++){
        s=new Node<T>;
        s->data=a[i];        
        r->next=s; r=s; 
    }
    r->next=NULL; 
}

Sin cabeza lista enlazada sola estructura de nodos
de interpolación cabeza:

{    
    first=NULL;
    for(int i=0;i<n;i++)
    {
        s=new node<T>; 
        s->data=a[i];         
        s->next=first;         
        first=s;       
    }
}

Interpolación de cola:

node<T> *r;     
head=NULL;    
if(n<=0)return;    
s=new node<T>;    
s->data=a[0];    
s->next=head;    
head=s;       
r=head;
for(int i=1;i<n;i++) {          
    s=new node<T>;         
    s->data=a[i];         
    r->next=s;         
    r=s;      
}

Destructor

template <class T>
LinkList<T>::~LinkList()
{
   Node<T> *q;   
   while(first) 
   {
       q=first->next;       
       delete first;       
       first=q;   
   }
}

Si la operación de la tabla lineal es principalmente para buscar, y cuando la inserción y eliminación rara vez se realizan, la tabla secuencial debe usarse como estructura de almacenamiento.
Para las tablas lineales que se insertan y eliminan con frecuencia, se debe usar una lista vinculada como estructura de almacenamiento.
Cuando la longitud de la tabla lineal no cambia mucho y es fácil determinar su tamaño de antemano, para ahorrar espacio de almacenamiento, la tabla de secuencia debe usarse como estructura de almacenamiento.

48 artículos originales publicados · Me gusta 25 · Visita 2453

Supongo que te gusta

Origin blog.csdn.net/qq_43628959/article/details/101177664
Recomendado
Clasificación