Informatică, întrebare adresată de iSmash, 8 ani în urmă

Spre exemplu am o Listă simplu înlănțuită cu n=10 noduri.
Cum fac să afișez pe ecran adresa din memorie a al patrulea nod?

Răspunsuri la întrebare

Răspuns de ElAce
1

Raspuns:

#include <iostream>

// Strctura principala

struct Node {

int Num;

Node* Link;

};

struct Node* Head;

// Functia care adauga o valuta la structura de Noduri

void addToLinkedList(int Num) {

Node* n = (Node*)malloc(sizeof(struct Node));

(*n).Num = Num;

(*n).Link = Head;

Head = n;

}

// Functia care obtine toate datele din Linked List

void printAllContainingsOfList() {

struct Node* n = Head;

while (n != NULL) {

 std::cout << (*n).Num << std::endl;

 n = (*n).Link;

}

}

int main() {

// Crearea unui exemplu de structura folosing linked list

int NodeNum = 3; // Arrayul incepe cu index 0, deci al 4lea = 3

for (int i = 1; i <= 10; i++)

 addToLinkedList(i);

printAllContainingsOfList();

// Obtinerea memoriei de adresese al nodului cu indexul al NodeNum-lea

struct Node* n = Head;

int Index = 0;

while (n != NULL) {

 auto p2p = (*n).Link;

 if (Index == NodeNum) {

  // Nodul este al NodeNum-lea

  // Fa ceva aici

 }

 std::cout << "Data la nod: " << (*n).Num << " | Adresa de memorie: " << p2p << std::endl;

 Index += 1;

 // Trecerea la urmatorul nod

 n = (*n).Link;

}

return 1;

}

Explicatie:

  • Nu exista o solutie simpla pentru obtinerea al X-lea nod dintr-un Linked List. Este necesara facerea unui Loop cu un coordonator Index.
Alte întrebări interesante