1 Ocak 2016 Cuma

Veri Yapıları 2 // C++ Bağlı listeler - Stack

/**
* @file  Ödev
* @description Programınızın açıklaması ne yaptığına dair.
*program çalıştıgında 100 adet karakter nesnesi oluşturuluyor oluşturulan nesneler baglı listeye istenildiği gibi ekleniyor
*sağa ilerle komutu, listenin ilk düğümündeki karakteri okuyup ve ekrana yazdıyor. Karakter nesnesi
ekrana yazıldıktan sonra listedeki ilk düğüm listeden çıkarılmalıdır.
Sola ilerle komutu ekrana yazılmış olan karakter nesnelerinden en son yazılanı yığıta ekleyip
ekrandan çıkartılıyor
*Dolayısıyla sağa ilerle komutunda ilk bakılacak yer yığıttır. Eğer yığıtta eleman var ise bağıl listeden
eleman alınmayacak, yığıttan alınacaktır. Yığıttan pop yapılan karakter ekrana yazılacaktır
Her sağa veya sola ilerle komutundan sonra şimdiye kadar ekranda oluşan karakterlerin son hali
ekrana yazdırılmaktadır
* @course 2.öğretim A GRUBU
* @assignment 2.ÖDEV
* @date Kodu 26.11.2015-30.11.2015
* @author Gruptakilerin  AHMET YENEN B130910031 yenenahmet@hotmail.com
*/
------------------------------------------------------------
Header Dosyaları
-----------------------
#ifndef Karakter_H
#define Karakter_H

class Karakter{
private:
char karakter;
public:
Karakter(){}
Karakter(char karakter);
char yolla();
};
#endif
----------------------------------
#ifndef stack_H
#define stack_H

#include
#include
#include
#include
#include
#define boyut 100

using namespace std;
class stack{
private:
char elemanlar[boyut];
int tepe;
public:
stack(){
tepe=0;
}
char pop(){
if(tepe==0){
cout<<"stack boş";
return false;
}
else{
tepe--;
return elemanlar[tepe+1];
}
}
bool dolu(){
if(tepe==boyut){
return true;
}
return false;
}
bool bos(){
if(tepe==0){
return true;
}
return false;
}
void push(char ch){
if(tepe==boyut){
cout<<"stack dolu..";
return;
}
elemanlar[tepe]=ch;
tepe++;

}

};

#endif
----------------------------------------------------------------
#ifndef LIST_H
#define LIST_H

#include
#include
#include
#include
#include
#define boyut 100

using namespace std;
class list
{
private:
char data;
list *next;

public:
list(){};
void ekle(char);
void sil(char);
void listele();
void goster(char* x, int sayac);

};
#endif
----------------------------------------------------------------------
Kaynak Dosyalar
----------------------------------------------
#include "Karakter.h"
Karakter::Karakter(char karakter)
{
this->karakter=karakter;
}

char Karakter::yolla()
{
return karakter;
}
---------------------------------------------
#include "List.h"

list *head;
void list::sil(char x){
list *p=head;
list *temp=p;

if(p==0)
cout<<"listede eleman yok"<
else if(p->next==0 && p->data==x)    // bir tane eleman var ve onun silindiÄŸi yer.
{
delete p; head=0;                          
}
else if(p==head && p->data==x)       // birçok eleman var ve baÅŸtakinin silindiÄŸi.
{
head=p->next;
delete p;
}
}
void list::ekle(char karakter)
{
list *newlist=new list;     // eklenecek nense için yer açılır.
newlist->data=karakter;         // data ve next pointer lar atanır.
newlist->next=0;
list *p=head;             // listede dolaşıcak bir pointer tanımlanır.
if(p==0)
head=newlist;
else
{
while(p->next!=0)
p=p->next;
p->next=newlist;    // en sona gelindiÄŸinde eleman eklenmiÅŸ olur.

}
}
void list::listele()
{
list *p=head;
int i=1;
if(p==0)
cout<<"liste boss."< else    
{
while(p)        // NULL elemana kadar gidip ekrana yazdırılıyor.
{
cout<data< p=p->next;
i++;
}                        
}
}
void list::goster(char* x, int sayac){
list a;
list *p=head;
if(p==0)
cout<<"liste boss."< cout<<"Duğümden Sildiğimiz eleman (Yıgıtta eleman yoktur) =>"<data< x[sayac]=p->data;
cout<<"islem yapıdıktan sonraki hal (ekran son durum) =>";
for(int k=0; k<=sayac;k++)
cout< //sayac++;
a.sil(p->data);
}
------------------------------------------------------------
#include "Stack.h"     Kaynak son
--------------------------------------------------------------
_-_-_-_-
Main dosyası
#include
#include
#include
#include
#include

#include "List.h"
#include "Karakter.h"
#include "Stack.h"

#define boyut 100
/* run this program using the console pauser or add your own getch, system("pause") or input loop */


using namespace std;
char ekrandakileritut[boyut];
int sayac=0;

int main(int argc, char** argv) {

setlocale(LC_ALL,"Turkish");
srand(time(NULL));
int  cevir;
char karakter;
int i ;
list *a = new list;
stack *b = new stack;
for(i=0;i Karakter *karaterN;
cevir=rand()%25+65;
karakter=cevir;
a->ekle(karakter);
karaterN = new Karakter(karakter);

}

int giris;
char bas;

//while(1)
do
{
cout<<"********************************"< cout<<"3 - Cikis"< cin>>giris;
switch(giris)
{
case 1:
{
cout<<"Sağa kaydırma işlemi yapılıyor :"< if(b->bos()==true){
a->goster(ekrandakileritut,sayac); cout< sayac++;
}
else if(b->bos()==false){
b->pop();
cout<<"Yıgıtta eleman var !(yıgıttan alınan eleman) =>"< sayac++;
cout<<"Yıgıt işleminden sone ekran son hali=>";
for(int k=0; k cout< cout< }
break;

}
case 2:
{
cout<<"Sola Kaydırma işlemi yapılıyor : "<
b->push(ekrandakileritut[sayac]);
sayac--;
cout<<"ekrandan silinen deger =>"< cout<<"Silindikten sonra ekran son hali =>";
for(int k=0; k cout< cout< break;
}
case 3:
return 0;
case 4:
{//baglı liste görülmek istenirse .....
a->listele();
break;
}
default:
{
cout<<"lutfen menudeki secenekleri seciniz."< }
}

}while(giris=3);
system("pause");
return 0;
}
---------------------------------------------------------------------------------

Hiç yorum yok:

Yorum Gönder