C programlamada Stack nasıl uygulanır?

0 Hisse senetleri
0
0
0
0

giriiş

Yığın, aynı türden öğelerden oluşan doğrusal bir veri yapısıdır. Bir Yığın'da, öğelerin eklenmesi ve çıkarılması yalnızca bir uç noktada gerçekleşir. Yığın'ın davranışı "son giren ilk çıkar" (LIFO) olarak tanımlanır. Bir öğe yığına "İTİLDİĞİNDE", yığından "çıkarılan" ilk öğe olur. Eklenen en eski öğeye ulaşmak için, önceki tüm öğeleri geri almanız gerekir.

Bu yazıda, yığın veri yapısı kavramını ve C'de diziler kullanılarak uygulanmasını öğreneceksiniz.

Yığınlarda gerçekleştirilen işlemler

Aşağıda Stacks tarafından sağlanan temel işlemler yer almaktadır.

  • push: bir elemanı yığının en üstüne ekler.
  • pop: Yığının en üstündeki elemanı kaldırır.
  • isEmpty: Yığının boş olup olmadığını kontrol eder.
  • isFull: Yığının dolu olup olmadığını kontrol eder.
  • üst: Yığının en üst elemanını görüntüler.

Stacks'in temel mekaniği

Başlangıçta, yığındaki en üstteki öğeyi izlemek için bir işaretçi (yukarı) ayarlanır. Yığın -1 olarak başlatılır.

Daha sonra yığının boş olup olmadığı top ve -1 karşılaştırılarak kontrol edilir.

Yığına elemanlar eklendikçe en üstteki konum güncellenir.

Öğeler çıkarıldığında veya silindiğinde en üstteki öğe kaldırılır ve en üstteki konum güncellenir.

C'de yığın uygulaması

YIĞINLAR yapılar, işaretçiler, diziler veya bağlı listeler kullanılarak temsil edilebilir.

Bu örnek, C'de dizileri kullanarak yığınları uygular:

#include <stdio.h>
#include <stdlib.h>
#define SIZE 4
int top = -1, inp_array[SIZE];
void push();
void pop();
void show();
int main()
{
int choice;
while (1)
{
printf("\nPerform operations on the stack:");
printf("\n1.Push the element\n2.Pop the element\n3.Show\n4.End");
printf("\n\nEnter the choice: ");
scanf("%d", &choice);
switch (choice)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
show();
break;
case 4:
exit(0);
default:
printf("\nInvalid choice!!");
}
}
}
void push()
{
int x;
if (top == SIZE - 1)
{
printf("\nOverflow!!");
}
else
{
printf("\nEnter the element to be added onto the stack: ");
scanf("%d", &x);
top = top + 1;
inp_array[top] = x;
}
}
void pop()
{
if (top == -1)
{
printf("\nUnderflow!!");
}
else
{
printf("\nPopped element: %d", inp_array[top]);
top = top - 1;
}
}
void show()
{
if (top == -1)
{
printf("\nUnderflow!!");
}
else
{
printf("\nElements present in the stack: \n");
for (int i = top; i >= 0; --i)
printf("%d\n", inp_array[i]);
}
}

Bu program kullanıcıya dört seçenek sunar:

  • Bir öğeyi itmek
  • Bir öğeyi patlatmak
  • Göstermek
  • Son

Kullanıcının bir sayı girmesini bekler.

  • Kullanıcı 1'i seçerse, program bir push() işlemi gerçekleştirir. Öncelikle top değerinin SIZE – 1'e eşit olup olmadığını kontrol eder. Doğruysa, "Taşma!!" mesajı görüntülenir. Aksi takdirde, kullanıcıdan yığına eklemek üzere yeni bir öğe sağlaması istenir.
  • Kullanıcı 2'yi seçerse, program bir pop() işlevi işler. İlk olarak, top değerinin -1'e eşit olup olmadığını kontrol eder. Doğruysa, "Underflow!!" görüntülenir. Aksi takdirde, en üstteki eleman kaldırılır ve program ortaya çıkan yığını çıktı olarak verir.
  • Kullanıcı 3'ü seçerse, program bir show() işlevi işler. İlk olarak top'un -1'e eşit olup olmadığını kontrol eder. Doğruysa, "Underflow!!" görüntülenir. Aksi takdirde, program ortaya çıkan yığını çıktı olarak verir.
  • Kullanıcı 4'ü seçerse programdan çıkılır.

"10" sayısını yığına itmek için şu kodu çalıştırın:

Output
Perform operations on the stack:
1.Push the element
2.Pop the element
3.Show
4.End
Enter the choice: 1
Enter the element to be inserted onto the stack: 10

Daha sonra Stack()'taki elemanları göster:

Output
Perform operations on the stack:
1.Push the element
2.Pop the element
3.Show
4.End
Enter the choice: 3
Elements present in the stack: 
10

Sonra pop():

Output
Perform operations on the stack:
1.Push the element
2.Pop the element
3.Show
4.End
Enter the choice: 2

Şimdi yığın boş. Pop()'u tekrar deneyin:

Output
Perform operations on the stack:
1.Push the element
2.Pop the element
3.Show
4.End
Enter the choice: 3
Underflow!! Your code... */

Bir yığının nasıl çalıştığını anlamak için bu programla denemeler yapmaya devam edin.

Yığın işlemlerinin zaman karmaşıklığı

Yığınlarda aynı anda yalnızca bir öğeye erişilebilir.

Yığın üzerinde push() ve pop() işlemleri gerçekleştirilirken O(1) zaman alır.

Sonuç

Bu yazıda, yığın veri yapısı kavramını ve C'de diziler kullanılarak uygulanmasını öğrendiniz.

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz