Üniversite sınıfında, zincirleme bir liste oluşturmak istiyorsak, bir yapı oluşturduğumuzu ve listenin her bölümünü bir işaretçi olarak ele alacağımızı öğrettiler. Böyle şey:Niçin zincirleme listesindeki düzenli yapı türü varlardan daha çok struct struct kullanmalısınız?
typedef struct node_elem {
int key;
int value;
struct node_elem* next;
} node;
typedef node* node_ptr;
int main() {
node_ptr b;
b = (node_ptr) malloc(sizeof(node));
b->key = 2; b->value=20;
Bunun bir yapı içine veri yazmak için tek güvenilir yolu düşündüm ama şu ben sadece denedim ve o kadar iyi çalıştı:
node a, c; // this instead of pointer, direct declaration
node_ptr b;
b = (node_ptr) malloc(sizeof(node));
a.key = 1; a.value = 10;
a.next = b;
b->key = 2; b->value = 20;
b->next = &c;
c.key = 3; c.value = 30;
yok sorum şu: Neden İşaretçi-varyantı bile kullanıyor musunuz? Diğer yol daha kolay görünüyor çünkü hafızayı ayrı olarak ayırmam gerekmiyor. Her iki şekilde de listeden geçebilirim.
"İşaretçi sürümü" ile, bir yerel değişken (yani "a" veya "c" değişkenleri) oluşturmanın tersine, belleği "malloc" (yani "b" değişkeni) ile ayırmak mı istiyorsunuz? – Cornstalks
1000 düğümlü bir liste oluşturmayı deneyin ve kendiniz görünün :) 1000 değişken beyanı yazmak ister misiniz? –
@Cornstalks yes – phip1611