1703317 Veri Yapıları Ve Algoritmalar Sunu 1
Veri-Bilgi Veri: Bilgisayar ortamında sayısal, alfasayısal veya mantıksal biçimlerde ifade edilebilen her türlü değer (Örn; 10, -2, 0 tamsayıları, 27.5, 0.0256, -65.253 gerçel sayıları, ‘A’, ‘B’ karakterleri, “Yağmur”, “Merhaba” karakter katarları, 0, 1 mantıksal değerleri, ses ve resim sinyalleri vb.) bir veridir. Bilgi: Verinin işlenmiş ve bir anlam ifade halidir. Örn; 10 kg, -2 derece, 0 noktası anlamlarındaki tamsayılar, 27.5 cm, 0.0256 gr, -65.253 volt anlamlarındaki gerçel sayılar, ‘A’ bina adı, ‘B’ sınıfın şubesi anlamlarındaki karakterler, “Yağmur” öğrencinin ismi, “Merhaba” selamlama kelimesi karakter katarları, boş anlamında 0, dolu anlamında 1 mantıksal değerleri, anlamı bilinen ses ve resim sinyalleri verilerin bilgi haline dönüşmüş halleridir.
ANSI/ISO Standardına göre C dilinin veri tipleri/yapıları Tipi Bit Boyutu Tanım Aralığı char 8 -127 – 127 unsigned char 0 – 255 signed char -127 – 127 int 16 veya 32* -32,767 – 32,767 unsigned int 0 – 65,535 signed int short int 16 unsigned short int signed short int long int 32 -2,147,483,647 – 2,147,483,647 signed long int unsigned long int 0 – 4,294,967,295 float 3.4x10-38 – 3.4x10+38 double 64 1.7x10-308 – 1.7x10+308
Veri Yapısı Verileri tanımlayan veri tiplerinin, birbirleriyle ve hafızayla ilgili tüm teknik ve algoritmik özellikleridir. VERİ YAPILARI tree graph stack queue list DOĞRUSAL (LINEAR) array string structure union integer float boolean char TEMEL/İLKEL (PRIMITIVE) BASİT (SIMPLE) BİRLEŞİK (COMPOUND) DOĞRUSAL OLMAYAN (NON-LINEAR)
Veri Yapıları Algoritmaları Program, işlemci ve işletim sistemi her veri yapısına ait verileri, farklı biçim ve teknikler kullanarak, bellekte yazma ve okuma işlemleriyle uygulamalara taşırlar. Bu işlemlere kısaca Veri Yapıları Algoritmaları denir. programlama esnekliği sağlar, bilgisayar donanım ve kaynaklarından en etkin biçimde faydalanma olanakları sunar, programın hızını, etkinliğini arttırır, maliyetini düşürür.
Veriden Bilgiye Geçiş HAM VERİ = 0100 0010 0100 0001 0100 0010 0100 0001 ASCII VERİYAPISINA DÖNÜŞEN BİLGİ = 0100 0010 0100 0001 0100 0010 0100 0001 B A B A BCD VERİYAPISINA DÖNÜŞEN BİLGİ = 0100 0010 0100 0001 0100 0010 0100 0001 4 2 4 1 4 2 4 1 16 BIT TAMSAYI VERİYAPISINA DÖNÜŞEN BİLGİ = 0100 0010 0100 0001 0100 0010 0100 0001 16961 16961 32 BIT TAMSAYI VERİYAPISINA DÖNÜŞEN BİLGİ = 0100 0010 0100 0001 0100 0010 0100 0001 1111573057
Belleğin Yapısı Ve Veri Yapıları
Temel/İlkel (Primitive) Veri Yapıları char blok=’A’; int agirlik=10; float uzunluk=27.5;
Basit (Simple) Veri Yapıları int agirlik [6]; char selam []=“Merhaba”; veya char selam []={‘M’,‘e’,‘r’,‘h’,‘a’,‘b’,‘a’,‘\0’}; struct kayit {char cinsiyet; char ad [ ]; int yas; float kilo; } ogrenci;
Birleşik (Compound) Veri Yapıları Basit (Simple) veri yapılarından “dizi” veya “structure”, nesne yönelimli programlamanın “sınıf/class” veri yapılarından
‘&’ Adres Operatörü ve ‘ ‘&’ Adres Operatörü ve ‘*’ Pointer’in Temel/İlkel (Primitive) Veri Yapılarında Kullanımı
‘&’ Adres Operatörü ve ‘ ‘&’ Adres Operatörü ve ‘*’ Pointer’in Basit (Simple) Veri Yapılarında Kullanımı
Yaygın Olarak Kullanılan Veri Yapıları Algoritmaları LİSTELER Bir Bağlı Doğrusal Listeler Bir Bağlı Dairesel Listeler İki Bağlı Doğrusal Listeler İki Bağlı Dairesel Listeler LİSTELER İLE STACK (YIĞIT) TASARIMI LİSTELER İLE QUEUEE (KUYRUK) TASARIMI LİSTELER İLE DOSYALAMA UYGULAMASI ÇOK BAĞLI LİSTELER AĞAÇLAR MATRİSLER ARAMA ALGORİTMALARI SIRALAMA ALGORİTMALARI GRAFLAR
LİSTELER Bir Bağlı Doğrusal Listenin Bellekteki Yapısı struct node { int data; node* link; };
node, liste(list), null(nill)
Bir Bağlı Doğrusal Liste Tanımlamak
void dumplist(node* list)
node* newnode()
node* last(node* list)
void addhead(node* node_, node*& list)
void concatenate(node*& l1, node* l2)
node* cons(int data_)
node* copy(node* list)
node* locate(int data_, node* list)
bool member(node* node_, node* list)
node* cuthead(node*& list)
void free(node*& list)
bool advance(node*& point)
bool deletenode(node* node_, node*& list)
fonksiyonların örnek kullanımı
İki Bağlı Doğrusal Liste Tanımlamak
void dumplist(node* list)
node* newnode()
node* last(node* list)
void addhead(node* node_, node*& list)
void concatenate(node*& l1, node* l2)
node* cons(int data_)
node* copy(node* list)
node* locate(int data_, node* list)
bool member(node* node_, node* list)
node* cuthead(node*& list)
void free(node*& list)
bool advance(node*& point)
bool deletenode(node* node_, node*& list)
İki Bağlı Dairesel Liste Tanımlama
void dumplist(node* list)
node* newnode()
node* last(node* list)
void addhead(node* node_, node*& list)
void concatenate(node*& l1, node* l2)
node* cons(int data_)
Uygulama Turbo C ile yazılan rehber programının incelenmesi Bir bağlı doğrusal listeler simülasyonunun incelenmesi
Listeler ile Recursive fonksiyon uygulamaları