Kullanıcının girdiği bir işemde parantezlerin '(' ')' doğru şekilde yazılıp yazılmadığı yığın kontrolü ile yapılacaktır...
Bilginin geliş sırasına göre, en son gelen elemana ilk erişilen liste yapısına yığın (stack) denir. Verilere yalnız bir uçtan erişim sağlanır.
Bu erişimde Last-In-First-Out (LIFO) prensibi vardır. Yani son giren eleman, ilk çıkar. Örneğin üst üste dizilen kitapları, yalnızca en üsttekine erişecek şekilde düşünebiliriz.
Stack tasarımı dizi üzerinde veya bağlı liste ile yapılabilir. Bağlı liste kullanarak boyutu sabit olmayan bir stack oluşturabiliriz. Dizi kullanmak için ise sabit bir boyut belirlemeliyiz.
UYGULAMA
Konuyu daha iyi anlatabilmek için, bağlı liste üzerinde gerçekleştirilmiş bir stack uygulaması anlatacağım. İşlemler:
- Eleman ekle (push)
- Eleman çıkar (pop)
#include <stdio.h>
#include <stdlib.h>
typedef struct liste{
char data;
struct liste *n;
}LST;
int main(){
LST *p,*q,*r;
p=q=new LST;
q->data='\0';
char islem[20];
printf("Isleminiz (Isleminizde '(' ')' Parantezlerini Kullaniniz) : "); scanf("%s",islem);
for(int i=0;islem[i]!='\0';i++){
if(islem[i]=='('){
if(q->data!='\0'){
r=new LST;
r->data=islem[i];
r->n=q;
q=r;
}
else{
q->data=islem[i];
}
}
else if(islem[i]==')'){
if(q->data=='\0'){
printf("Hatali Islem...");
system("pause");
return 0;
}
else{
if(q==p){
q->data='\0';
}
else{
r=q;
q=q->n;
free(r);
}
}
}
}
if(q->data=='\0'){
printf("Isleminizde Yazim Hatasi Yoktur ...%c",q->data);
}
else printf("Hatali Islem...%c",q->data);
printf("\n\n");
system("pause");
return 0;
}
2 Yorumlar
kodlar biraz daha anlaşılır olsaydı güzel bir iş ortaya çıkmış olacaktı emeğinize sağlık
YanıtlaSilGerekli düzenlemeleri yapacağız. Geri dönüşünüz için teşekkür ederim.
SilBizimle fikirlerinizi paylaşabilirsiniz.