C# seule liste liée de mise en œuvre
Tout en essayant de comprendre comment une seule liste peut être implémenté en C#, je suis tombé sur le lien ci-dessous :
La création d'un très simple liste chaînée.
Cependant, comme je suis novice en C#, j'ai confondu par la syntaxe qui est répertorié dans la section initiale de la discussion ci-dessus. Une classe nommée Nœud est déclaré et il y a une autre déclaration au sein de la classe déclarée en tant que "public Nœud suivant". Est cette déclaration appelle un constructeur? S'il vous plaît aider.
public class Node {
public Node next;
public Object data;
}
InformationsquelleAutor user3011489 | 2013-11-20
Vous devez vous connecter pour publier un commentaire.
Dans une simple liste liée individuellement la mise en œuvre de la
Node
type contient une référence vers l'élément suivant de la liste, qui est ce que lenext
champ dans laNode
type que vous avez posté n'. Cette référence est utilisée pour permettre à l'itération de la liste.La enfermant
LinkedList
classe (ou ce que vous voulez l'appeler) ne contiendra qu'une seuleNode
référence au premier élément de la liste. A partir de cette première nœud vous pouvez ensuite étape par le biais de la liste par l'obtention de l'next
champ. Lorsquenext
est null, alors vous avez atteint la fin de la liste.Prendre ce code par exemple:
La
First
propriété retourne simplement le nœud racine, qui est le premier nœud de la liste. LeLast
propriété commence au nœud racine et de parcourir la liste jusqu'à ce qu'il trouve un nœud dont lenext
propriété est null, indiquant la fin de la liste.Cela rend plus simple pour ajouter des éléments à la liste:
Pour supprimer un nœud, vous devez trouver le nœud qui les précède dans la liste, puis mettre à jour le
next
lien de que nœud pour pointer vers le nœud suivant le seul à être supprimé:Il y a quelques autres opérations que vous pouvez effectuer, comme l'insertion de valeurs à des positions dans la liste, la permutation de nœuds, etc. L'insertion d'après un nœud est rapide, avant de se ralentir puisque vous avez pour localiser l'avant nœud. Si vous voulez vraiment rapide 'insert-avant, vous devez utiliser une liste à double liaison où la
Node
type a à la foisnext
etprevious
liens.À développer votre question dans le commentaire...
En C# il y a deux classifications de base que tous les types de tomber dans l': types de valeur et les types référence. Les noms reflètent la façon dont ils sont transmis entre les blocs de code: types de valeur sont passés par valeur (la valeur est copiée dans une variable), tandis que les types de référence sont passés par référence (référence/pointeur est copiée dans une variable). La différence est que les modifications apportées à un type de valeur de paramètre n'aura aucun effet sur l'appelant une copie de la valeur, tandis que les changements d'un type de référence paramètre sera reflété dans les appelant copie de la référence.
Il en est de même de l'attribution des valeurs et des références à des variables. Dans la suite, la valeur de
a
n'est pas modifiée lorsqueb
est modifié:C'est assez intuitif. Ce qui pourrait vous passionner, c'est que dans C#
struct
est également un type de valeur:Ci-dessus donnera le résultat
a b
parce que lorsque vous avez attribuéa
àb
une copie a été faite. Mais si l'on change la structure de classe:Parce que la variable
b
est une référence à la même objet, comme une variablea
références, la sortie serab b
. Les deux variables font référence à la même objet.Si vous venez à partir de C/C++ ou d'autres programmes similaires la langue, vous pouvez penser de référence type de variables comme étant des pointeurs. Ce n'est pas tout à fait la même, et C# n'ont en fait des pointeurs (ils sont cachés de la normale de code managé), mais il est assez proche. Jusqu'à ce que vous pointez sur un instance du type qu'il n'est pas tout à fait utilisable. Tout comme un
char*
en C/C++ n'est pas particulièrement utile jusqu'à ce que vous point quelque part.Joseph Alhabari (a écrit un excellent article sur la valeur et les types référence: C# Concepts: Valeur vs Types de Référence. Il est bien intéressant à lire, comme beaucoup de ce qu'il écrit. Je voudrais également vous recommande fortement d'envisager de faire de l'un de ses C# Résumé livres.
new
mot-clé.Il existe un moyen facile pour créer la seule Liste Liée. Permet d'essayer de comprendre le concept. Si le concept est clair, alors vous pouvez comprendre la logique elle-même. Individuellement Liée Liste a de Nœud avec deux sections. On a des données de valeur en elle et d'autres a l'adresse de référence du noeud suivant. Prendre l'apparence dans le code suivant:
Nous devons d'abord créer la Liste Liée Classe de Nœud
Ici, la classe a de la Valeur et porte la référence du Noeud suivant dans la séquence. Ensuite, nous devons créer la Liste Liée elle-même
Ici, la Clé est d'Ajouter des éléments dans la Liste chaînée. Nous avons besoin d'abord de vérifier si la liste existe ou pas. Nous vérifions la Première ou à la Tête de Nœud dans la Liste chaînée. Si elle est vide, nous attribuons au nœud en tant que premier point d'entrée. À ce stade, le Dernier élément est le premier élément lui-même.
Maintenant c'est comment nous ajouter et afficher des éléments
Laissez-moi savoir si ça a du sens 🙂
C'est le champ de la classe. Référence: http://msdn.microsoft.com/en-us/library/ms173118.aspx
Rappelez-vous que une Liste Liée non seulement détient des données, mais une référence /pointeur vers le nœud suivant dans la liste. Étant donné que les classes sont des types référence en C#, vous ne verrez pas de syntaxe particulière que l'on voit en C ou C++.