18
May
2022

Veri yapıları ve algoritmalar dersi 8. slayt – Yığın

Slayt ana hatları

Please wait while flipbook is loading. For more related info, FAQs and issues please refer to DearFlip WordPress Flipbook Plugin Help documentation.

Animasyonlu görünüm

#include<iostream>
#include <locale.h>
using namespace std;

// Yığın veri yapısı
struct stack{
  int boyut;
  int *elemanlar;
  int ust;
};

// Yeni bir yığın oluştur
stack* createStack(int boyut)
{
  stack *yigin = new stack;
  yigin->boyut = boyut;
  yigin->ust = -1;
  yigin->elemanlar = new int[boyut];
  return yigin;
}

// Yığın boş mu?
bool isEmpty(stack &yigin)
{
  if (yigin.ust == -1)
    return true;
  else
    return false;
}

// Yığın dolu mu?
bool isFull(stack &yigin)
{
  if (yigin.ust == yigin.boyut-1)
    return true;
  else
    return false;
}

// Yığına eleman ekle
bool push(stack &yigin, int veri)
{
  if (isFull(yigin) == false)
  {
    yigin.elemanlar[++yigin.ust] = veri;
    cout<<yigin.elemanlar[yigin.ust]<<" eklendi. Yeni üst:"<<yigin.ust<<endl;
    return true;
  }
  cout<<"Yığın dolu";
    return false;
}

// Yığından eleman çıkar
bool pop(stack &yigin) 
{
  if (isEmpty(yigin) == false)
  {
    cout<<yigin.elemanlar[yigin.ust]<<" çıkarıldı"<<endl;	    
    yigin.elemanlar[yigin.ust--] = NULL;
    return true;
  }
  cout<<"Yığın zaten boş"<<endl;
  return false;	
}

// En üst elemanı yazdır
void peek(stack &yigin)
{
  cout<<"En üst eleman: "<<yigin.elemanlar[yigin.ust]<<", en üst indeks: "<<yigin.ust<<endl;
}

// Tüm yığını yazdır
void display(stack  &yigin)
{
  if (isEmpty(yigin) == false)
  {
    for (int i = 0; i<=yigin.ust; i++)
      cout<<yigin.elemanlar[i]<<endl;
  }
  else cout<<"Yığın boş";	
}

main()
{
  setlocale(LC_ALL, "Turkish");
  
  // Başlangıç adresi yigin olan 10 elemanlı bir integer yığını oluştur
  stack *yigin = createStack(10);
  
  // Yığın dolu mu?
  cout<<isFull(*yigin);
  
  // Yığın boş mu?
  cout<<isEmpty(*yigin);
  
  // Ekle
  push(*yigin, 23);
  push(*yigin, 21);
  push(*yigin, 13);
  push(*yigin, 3);
  push(*yigin, 11);
  push(*yigin, 15);
  
  display(*yigin);
  
  pop(*yigin);
  pop(*yigin);
  peek(*yigin);
  pop(*yigin);
  pop(*yigin);
  pop(*yigin);
  pop(*yigin);
  pop(*yigin);
  pop(*yigin);
}

 

%d blogcu bunu beğendi: