Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Bağlı liste. Programlamada en temel veri yapılarından biri.

Bağlı listelerde saklanan bilgiler bir ip üzerine dizilmiş düğümlere (node) benzer. Her düğümün kendinden bir önceki ve bir sonraki düğümle bağlantısı vardır. Bu bağlantılar sayesinde liste üzerinde gezilebilir, yeni düğümler eklenebilir, varolan düğümler silinebilir.

Üç çeşidi vardır: Single, double ve circular. Tek yönlü, çift yönlü ve dairesel.

Tek yönlü olanında her düğüm kendisinden sonraki düğümü gösteren bir referansa sahiptir. Çift yönlü olanda her düğüm kendisinden önceki ve sonraki düğümleri gösteren iki referansa sahiptir. Dairesel olanında ise son düğüm ilk düğüme bağlanır.

Tek yönlü bağlı listeye örnek:

public class Node
{
   public object Value; // bu düğümde saklanan data
   public Node Next; // sonraki düğüme referans

   public Node(object val)
   {
      this.Value = val;
   }

   // en son uca bir düğüm eklemek
   public void Add(object val)
   {
      Node lastNode = this;
      while(lastNode.Next!=null)
         lastNode = lastNode.Next;
      lastNode.Next = new Node(val);
   }

   // nodeları dolaşıp datalarını yazdıralım.
   public void Traverse()
   {
      Node gezgin = this;
      while(gezgin.Next!=null)
      {
         Console.WriteLine(gezgin.Value);
         gezgin = gezgin.Next;
      }
   }
}

Şimdi bir kaç düğüm oluşturup bağlı liste örneğimizi deneyelim (çok didaktik oluyor bu cümleler)

Node head = new Node(null, "head");
head.Add("ikinci düğüm");
head.Add("üçüncü düğüm");

head.Traverse();

fizikci
20 Ocak 2005 22:11 ~ 01 Kasım 2005 23:38
2.  Linux çekirdeği için yazılmış olan circular linked list'i aşağıdaki adresten inceleyebilirsiniz:
http://isis.poly.edu/kulesh/stuff/src/klist/
fizikci
01 Kasım 2005 23:42
3.  C ile bir bağlı liste yazdıydım. Buraya alayım örnek olsun kafası:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Node
{
   char* ad;
   struct Node* tail;
};

struct Node* createNode(char* ad)
{
    struct Node* node = (struct Node*) malloc(sizeof(struct Node));
    node->ad = ad;
    node->tail = NULL;
}
void add(struct Node* list, char* ad)
{
    if(list->tail==NULL)
        list->tail = createNode(ad);
    else
        add(list->tail, ad);
}
void display(struct Node* list)
{
    if(list!=NULL)
    {
        printf("%s\n", list->ad);
        display(list->tail);
    }
}

int main()
{
    struct Node* list = createNode("Zuzay");
    add(list, "Gunes Sistemi");
    add(list, "Dunya");
    add(list, "Turkiye");
    add(list, "Istanbul");
    display(list);

    getchar();
}

İlginç bir şey farkettim: createNode fonksiyonu node'u return etmemesine rağmen bu kod gayet düzgün çalışıyor. C'de return içermeyen fonksiyonların buldukları ilk uygun yerel değişkeni return etme gibi bir özelliği mi var acabağa?
fizikci
06 Şubat 2006 00:39
4.  normal dizilerin sabit olması nedeniyle günün birinde adamın birinin tası atmış ve ulen yeter değişken uzunlukta(ne fazla ne eksik) bir dizi istiyom programlama dilleri bunu bana vermiyorsa bende oturur kendim yazarım diyerekten olaya çare bulmuştur.. Tabi sonra çok daha iyileri çıktı...
bkz: ArrayList
bilader
06 Şubat 2006 23:04
5.  Veri Yapıları ve Algoritmalar dersinde üzerinde durulan bir konu.
mennan
17 Şubat 2006 21:48
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1109 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen