Stack Islemleri. Postfix ve Infix notasyonlari. Stack ozellikleri

Benzer belgeler
Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

STACK (ÇIKIN-YIĞIN-YIĞIT) VERİ YAPISI LAST-IN-FIRST-OUT LIFO VERİ YAPISI

YZM 2116 Veri Yapıları

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

Final Sınavı Soruları Güz, Süre: 90 Dakika

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

YIĞIT STACK. Yrd. Doç. Dr. Aybars UĞUR

VERİ YAPILARI DERS NOTLARI BÖLÜM 4 STACK (YIĞIN, YIĞIT) Yard. Doç. Dr. Deniz KILINÇ

Diziler (Arrays) Çok Boyutlu Diziler

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

/* Çember alanını hesaplar */

Bölüm 10 - Yapılar, Birlikler, Bit İşleme ve Sayma Sabitleri (Enumarations)

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

SOMEBODY ELSE'S. ( DATA STRUCTURES and ALGORITHMS ) Veri Yapıları ve Algoritmaları

Bölüm 2 - C ile Programlamaya Giriş

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

#include<stdio.h> #include<conio.h> #define doktorsayisi 3. typedef struct dr{ int ay1, ay2, ay3, ay4; } doktor; float hesapla(doktor dktr){

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

Adı Soyadı Öğrenci No. Toplam (100p) 2 (10p) +10p. 5 (25p) +10p. 3 (20p) 4 (25p) 1 (20p)

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Fonksiyonlar -Genel Test- A

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

Alıştırma 1: Yineleme

Ne zaman operator overloading yapilir. Operator Overloading

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

1 PROGRAMLAMAYA GİRİŞ

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Pointer Kavramı. Veri Yapıları

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Bölüm 7. İfadeler ve atamalar ISBN

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { int ID; char isim[15]; char soyisim[15];

Turkcell Paf Takımı Proje Raporu. Hazırlayan : Oben IŞIK

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Görsel Programlama (Visual Programming)

Final Sınavı Soruları Bahar 2018

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

Giri. Program yazmaya balamadan önce

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Hiyerarşik Yazılım Tasarımı Kavramı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Göstericiler (Pointers)

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

PROGRAMLAMAYA GİRİŞ DERS 2

enum, struct, union ve typedef Yapıları

DOSYA İŞLEMLERİ Programlama dilleri hafta -

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

Class LinkedList java.lang.object java.util.abstractcollection java.util.abstractlist java.util.abstractsequentiallist java.util.

C dilinde if-else yapısı

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

Standard Template Library

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

Bölüm 3 Yapısal Programlama

Final Sınavı Örnek Soruları Bahar 2018

Temel Bilgisayar Bilimleri Ders Notu #2

Prosesler Arası Haberleşme ve Senkronizasyon

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

11- FONKSİYONLAR (FUNCTIONS)

Week 6: Bağlı Liste (Linked List) BAĞLI LİSTE KAVRAMI TEKİL (SINGLE) BAĞLI LİSTE ÇİFT (DOUBLE) BAĞLI LİSTE DAİRESEL (CIRCULAR) BAĞLI LİSTE

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Sınav Dağılım & IMKB Endeks

Python ile Programlamaya Giris

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Programlama Dilleri Laboratuvarı

VB de Veri Türleri 1

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

İşletim Sistemleri-II

Eln 1001 Bilgisayar Programlama I

Fonksiyonlar. Yrd.Doç.Dr.Bülent Çobanoğlu

YMT219 VERİ YAPILARI ÖDEV-1

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

ÖZYİNELEME RECURSION. Doç. Dr. Aybars UĞUR

BİL1001 Bilgisayar Bilimlerine Giriş 1

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

ELN1001 BİLGİSAYAR PROGRAMLAMA I

BÖLÜM 11: YAPISAL VERİ TİPLERİ

Yrd. Doç. Dr. Caner ÖZCAN

Transkript:

Veri Yapilari Stacks Stacks Queues Lists Stack nedir Stack de tanimli islemler Push Pop Empty Full Inialization Stack in gerceklestirilmesi 10/7/2004 Veri yapilari 3.1 10/7/2004 Veri yapilari 3.2 Stack Push 10/7/2004 Veri yapilari 3.3 10/7/2004 Veri yapilari 3.4

Pop Stack Islemleri Bu stack ten cikarilir Stack i initialize et Stack in ustundeki item i pop et Stack in uzerine bir item push et Stack empty controlu Stack full controlu Stack in uzunlugunu bul Stack i clear et (sil) 10/7/2004 Veri yapilari 3.5 10/7/2004 Veri yapilari 3.6 Stack ozellikleri Pop ve push islemleri stack in ustunde yapilir Last-In First Out (LIFO) Fonksiyonlari cagirma esnasinda kullanilir Stack e fonksiyon parametreleri ve fonksiyonda tanimli local variable lar fonksiyon cagrimi esnasinda stack e itilirler Recursive fonksiyonlari gerceklestirmede kullanilir Postfix expression larin hesaplanmasinda 10/7/2004 Veri yapilari 3.7 Postfix ve Infix notasyonlari Bir cok compiler lar programlaradaki infix notasyonunda yazili expressionlari postfix notasyonuna cevirerek bellekte saklar Infix notation: operator ilgili operandlarin arasinda yazilir ornek: (3+4) x 2 Postfix notation: operator ilgili operandlardan sonra gelir ornek: 3 4 + 2 x Bu yazimda parantezlere gerek yoktur 10/7/2004 Veri yapilari 3.8

Postfix expression larin stack yardimiyle hesaplanmasi ornek Stack postfix expression larin hesaplanmasinda kullanilabilir Empty stack le baslanip, postfix expression soldan saga dogru taranir. Bir operand karsilasildiginda o operand stack e itilir. Bir operator ile karsilasildiginda ise o operatorun gerek duydugu sayida operand stack ten cekilir Daha sonra pop edilen iki operanda operator uygulanir ve bulunan sonuc tekrar stack e itilir. Yukaridaki uc adim postfix expression in tamami taranincaya kadar devam edilir 3 4 + 2 x Symbol processed initial 3 4 + 2 x Stack 3 3 4 7 7 2 14 Actions push 3 push 4 pop 4, pop 3; 3+4 = 7 push 7 push 2 pop 2, pop 7; 7x2 = 14 push 14 10/7/2004 Veri yapilari 3.9 10/7/2004 Veri yapilari 3.10 Stack Implementation #define MAXSTACK 20 Stack: top: top index : 2 1 0 int top; float entry[maxstack]; 10/7/2004 Veri yapilari 3.11 struct StackRec int top; float entry[maxstack]; ; typedef struct StackRec Stack;; entry: 10/7/2004 Veri yapilari 3.12..

#ifndef STACKH #define STACKH #include <stdbool.h> #define MAXSTACK 20 struct StackRec int top; float entry[maxstack]; ; typedef struct StackRec Stack; void intializestack(stack* stackptr); bool stackempty(const Stack* stackptr); bool stackfull(const Stack* stackptr); void push(stack* stackptr, float item); float pop(stack* stackptr); #include <stdio.h> #include <stdlib.h> #include stack.h void initializestack(stack* stackptr) stackptr -> top = -1; stackptr: addr of Stack Stack top: entry: -1.... #endif 10/7/2004 Veri yapilari 3.13 10/7/2004 Veri yapilari 3.14 bool stackempty(const Stack* stackptr) if (stackptr->top < 0) return true; else return false; bool stackfull(const Stack* stackptr) if (stackptr->top >= MAXSTACK-1) return true; else return false; 10/7/2004 Veri yapilari 3.15 void push(stack* stackptr, float item) if (stackfull(stackptr)) fprintf(stderr, Stack is full\n ); exit(1); else stackptr->top++; stackptr->entry[stackptr->top] = item; 10/7/2004 Veri yapilari 3.16

float pop(stack* stackptr) float item; if (stackempty(stackptr)) fprintf(stderr, Stack is empty\n ); exit(1); else item = stackptr->entry[stackptr->top]; stackptr->top--; Sequence: -1.5 2.3 6.7 - once elementleri teker teker - stack e it. - daha sonra elementleri stack den cek. return item; 10/7/2004 Veri yapilari 3.17 10/7/2004 Veri yapilari 3.18 2.3 6.7 6.7-1.5 2.3-1.5 10/7/2004 Veri yapilari 3.19 10/7/2004 Veri yapilari 3.20

6.7 2.3-1.5 2.3-1.5 6.7 10/7/2004 Veri yapilari 3.21 10/7/2004 Veri yapilari 3.22-1.5 6.7 2.3 10/7/2004 Veri yapilari 3.23 6.7 2.3-1.5 10/7/2004 Veri yapilari 3.24

module reverse () initialize the Stack loop input nextnumber if (end of input) then exit loop if (Stack is not full) then push nextnumber onto Stack loop if (Stack is empty) then exit loop pop nextnumber off the Stack output nextnumber 10/7/2004 Veri yapilari 3.25 #include <stdio.h> #include stack.h int main() Stack thestack; float next; initializestack(&thestack); printf( Enter number sequence: ); while (scanf( %f, &next)!= EOF) if (!stackfull(&thestack)) push(&thestack, next); while (!stackempty(&thestack)) next = pop(&thestack); printf( %f, next); printf( \n ); 10/7/2004 Veri yapilari 3.26 Linked-List Implementation of Stack Stack linked-list data structure i olarak temsil edilebilir Push ve pop islemleri liste nin basindan yapilir (performance acisindan) Dolayisiyle liste backward olarak temsil edilmeli L L a b c x a b c push(x,l) 10/7/2004 Veri yapilari 3.27 10/7/2004 Veri yapilari 3.28

L L a b c b c pop(l,x) typedef struct CELL *STACK; struct CELL int element; STACK next; ; enum BOOLEAN TRUE,FALSE; void initialize(stack *ps) *ps = NULL; enum BOOLEAN isempty(stack *ps) return (*ps == NULL) enum BOOLEAN isfull(stack *ps) return FALSE; enum BOOLEAN pop(stack *ps, int *px) if ( *ps == NULL) return FALSE; else *px = *ps->element *ps = *ps ->next; return TRUE; enum BOOLEAN push (int x, STACK *ps) STACK newcell; newcell = (STACK) malloc(sizeof(struct CELL)); newcell->element = x; newcell->next = *ps; *ps = newcell; return TRUE; 10/7/2004 Veri yapilari 3.29 10/7/2004 Veri yapilari 3.30