Merhabalar,
Linked list konusunun daha başındayım, öğrendiğim kadarı ile bir şeyler yapmaya çalıştım fakat tam kavrayamadım sanırım, atacağım kod parçasındaki hatalarımı belirtir misiniz? Bu arada şunu belirteyim kod ile uğraştım hatalarımı bulmaya çalıştım ama bulamadım direkt atmıyorum yani buraya, uğraşmadan yardım istiyorum gibi bir düşünce oluşmasın lütfen, teşekkür ederim.
C:
#include <stdio.h>
#include <stdlib.h>
struct n {
int x;
struct n *next;
};
typedef struct n node;
void listeolustur(node *l){
int i=0;
for(;i<5;i++){
l=(node*)malloc(sizeof(node));
l=l->next;
}
l->next=NULL;
}
void doldur(node *d ){
int i=1;
for(;d->next!=NULL;i++){
d->x=i*10;
d=d->next;
}
}
void bastir(node *b){
while(b->next){
printf("%d\n",b->x);
b=b->next;
}
}
int main() {
node *root,*iter;
root=(node*)malloc(sizeof(node));
root->x=1;
root->next=NULL;
iter=root->next;
listeolustur(iter);
doldur(root);
bastir(root);
}
L harfini tek başına kullanma. 1980'lerde yaşamıyoruz. Döngüleri öyle yapma. Malloc ile aldığın yerleri bırak. Fonksiyonlarında yolladığın şeyler yok oluyor. Yedek almalısın. Iter diye yedek almak bana saçma geldi.
Root'un next'ini NULL yapıp, onu iter'e atayıp sonra onu doldurmayı nasıl düşünüyorsunuz?
Yöntem olarak kötü bir kod. Linked list için ekleme ve çıkarma fonksiyonun olmalı. Sonra topluca doldurmak istiyorsan ayrı bir fonksiyon yazıp onun içinde eklemeyi veya çıkarmayı çağırmalısın.
L harfini tek başına kullanma. 1980'lerde yaşamıyoruz. Döngüleri öyle yapma. Malloc ile aldığın yerleri bırak. Fonksiyonlarında yolladığın şeyler yok oluyor. Yedek almalısın. Iter diye yedek almak bana saçma geldi.
Root'un next'ini NULL yapıp, onu iter'e atayıp sonra onu doldurmayı nasıl düşünüyorsunuz?
Yöntem olarak kötü bir kod. Linked list için ekleme ve çıkarma fonksiyonun olmalı. Sonra topluca doldurmak istiyorsan ayrı bir fonksiyon yazıp onun içinde eklemeyi veya çıkarmayı çağırmalısın.
L harfini tek başına kullanma. 1980'lerde yaşamıyoruz. Döngüleri öyle yapma. Malloc ile aldığın yerleri bırak. Fonksiyonlarında yolladığın şeyler yok oluyor. Yedek almalısın. Iter diye yedek almak bana saçma geldi.
Root'un Next'ini null yapıp, onu Iter'e atayıp sonra onu doldurmayı nasıl düşünüyorsunuz?
Yöntem olarak kötü bir kod. Linked list için ekleme ve çıkarma fonksiyonun olmalı. Sonra topluca doldurmak istiyorsan ayrı bir fonksiyon yazıp onun içinde eklemeyi veya çıkarmayı çağırmalısın.
L harfini tek başına kullanma. 1980'lerde yaşamıyoruz. Döngüleri öyle yapma. Malloc ile aldığın yerleri bırak. Fonksiyonlarında yolladığın şeyler yok oluyor. Yedek almalısın. Iter diye yedek almak bana saçma geldi.
Root'un next'ini NULL yapıp, onu iter'e atayıp sonra onu doldurmayı nasıl düşünüyorsunuz?
Yöntem olarak kötü bir kod. Linked list için ekleme ve çıkarma fonksiyonun olmalı. Sonra topluca doldurmak istiyorsan ayrı bir fonksiyon yazıp onun içinde eklemeyi veya çıkarmayı çağırmalısın.
Mantıklı bir açıklaması varsa ve benim n kullanmam gibi basit bir şeyse kullanılmasında sakınca görmüyorum. Ama l harfi kullanılan fonta göre 1 ile sıkça karışıyor.
Buradaki tek sorun o da değil. Harfin bir anlamını göremedim ben. Parametreler fonksiyon adının ilk harfi olmalı diye bir kural var galiba.