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
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.