Maison  >  Article  >  Une liste chaînée linéaire est-elle une structure de stockage liée d'une liste linéaire ?

Une liste chaînée linéaire est-elle une structure de stockage liée d'une liste linéaire ?

(*-*)浩
(*-*)浩original
2019-10-24 09:50:3414067parcourir

Selon la complexité de la relation entre chaque élément de données dans la structure de données, les structures de données sont généralement divisées en deux grands types : les structures linéaires et les structures non linéaires.

Une liste chaînée linéaire est-elle une structure de stockage liée d'une liste linéaire ?

La liste chaînée linéaire, comme son nom l'indique, est similaire à une liste chaînée. liste de séquences linéaires.La différence est qu'une table de séquences linéaires doit ouvrir une zone continue dans la mémoire, donc l'état des données stockées dans la mémoire est continu, tandis que le stockage de la liste chaînée linéaire dans la mémoire est aléatoire, et la connexion entre les données repose sur un pointeur. (Apprentissage recommandé : Tutoriel vidéo Web front-end)

Si une structure de données non vide satisfait aux deux conditions suivantes :

① A et a seulement un point de nœud racine ;

②Chaque nœud a au plus un antécédent et au plus un conséquent. La structure de données est appelée structure linéaire, également connue sous le nom de tableau linéaire. Par conséquent, les listes linéaires, les piles et les files d'attente, ainsi que les listes chaînées linéaires sont toutes des structures linéaires, tandis que les arbres binaires sont des structures non linéaires.

Une table linéaire avec une structure de stockage liée. Elle utilise un ensemble d'unités de stockage avec des adresses arbitraires pour stocker des éléments de données dans la table linéaire. Il n'est pas nécessaire que les éléments logiquement adjacents soient physiquement adjacents et ne soient pas accessibles de manière aléatoire. . Généralement décrit par des nœuds : nœud (représentant des éléments de données) = domaine de données (image des éléments de données) + domaine de pointeur (indiquant l'emplacement de stockage des éléments suivants)

Dans la structure de stockage en chaîne, la structure de données est stockée. l'espace de stockage peut être discontinu et l'ordre de stockage de chaque nœud de données peut être incompatible avec la relation logique entre les éléments de données. La relation logique entre les éléments de données est déterminée par le champ de pointeur. La méthode de stockage en chaîne peut être utilisée pour représenter à la fois des structures linéaires et des structures non linéaires.

De manière générale, dans la structure de stockage liée d'une liste linéaire, les symboles de stockage de chaque nœud de données sont discontinus, et la relation de position et la relation logique de chaque nœud dans l'espace de stockage sont également incohérentes. Pour une liste chaînée linéaire, vous pouvez partir du pointeur principal et parcourir les pointeurs de chaque nœud jusqu'à tous les nœuds de la liste chaînée.

Créez une liste chaînée linéaire, qui est un processus de génération dynamique de points de lien et de les relier à leur tour à la liste chaînée. Soit le pointeur du premier point de lien de la liste chaînée linéaire.

Lorsque le premier point de lien est généré, la liste chaînée est vide, envoyez simplement le point de lien directement à la liste. Chaque fois qu'un élément de données est obtenu, un point de lien est généré pour l'élément de données. Tandis que les informations de données de l'élément de données obtenu sont envoyées au champ de données du nouveau nœud, le champ de pointeur du nouveau nœud est défini sur NULL. puis le champ de pointeur du nouveau nœud est défini sur NULL. Le nœud est inséré à la fin de la liste chaînée.

Dans l'algorithme suivant, les chaînes sont lues ligne par ligne à partir d'un fichier nommé data.txt en tant qu'éléments de données d'une liste chaînée linéaire. L'algorithme est le suivant :

LinkList creatList() {
    LinkList r, p, list = NULL;
    char data[ 100 ];
 
    FILE *f = fopen( "data.txt", "rb" );
    while( fgets( data, 100, f ) )
    {
        p = ( LinkList )malloc( sizeof( LNode ) );
        if( p != NULL ){
            strcpy( p->data, data );
            p->link = NULL;
 
            if( list == NULL )
                list = p;
            else
                r->link = p;
            r = p;
        }
    }
    fclose( f );
 
    return list;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:qu'est-ce que bdoArticle suivant:qu'est-ce que bdo