folder Tahribat.com Forumları
linefolder C - C++
linefolder Basit Bir Data Structures Sorusu



Basit Bir Data Structures Sorusu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ataturkcu1
    ataturkcu1's avatar
    Kayıt Tarihi: 20/Nisan/2007
    Erkek

    #include <iostream>

    struct node{

    int number;

    node *next;

    node *previous;

    };

    struct list{

    node *head;

    node *tail;

    void create();

    void deleteAll();

    void add(node *newNode);

    void print();

    };

    using namespace std;

    int main(){

    list adres_kitabi;

    adres_kitabi.create();

    cout<<"Bu programda temel liste operasyonlarini isleyecegiz."<<endl;

    cout<<"Temel liste operasyonlari:Silme,ekleme,yazdirma ve olusturmadan olusmaktadir"<<endl;

    cout<<"Lutfen yapmak istediginiz operasyonu seciniz"<<endl;

    bool emrah=true;

    while(emrah){

    cout<<"Operasyon listesi:"<<endl;

    cout<<"1.Yeni eleman ekle"<<endl;

    cout<<"2.Eleman sil."<<endl;

    cout<<"3.Eleman yazdir"<<endl;

    cout<<"Tercihinizi giriniz"<<endl;

    int tercih;

    cin>>tercih;

    node x;

    if(tercih==1){

    adres_kitabi.add(&x);

    }

    emrah=false;

    cout<<x.number;

    }

    }

    void list::create(){

    head=NULL;

    tail=NULL;

    }

    void list::add(node *newNode){

    newNode=new node;

    if(head==NULL){

    cout<<"Lutfen numara giriniz"<<endl;

    cin>>newNode->number;

    newNode->next=NULL;

    newNode->previous=NULL;

    head=newNode;

    }

    /*

           else{

    newNode->previous=head;

    newNode->next=tail;

    tail->previous=newNode;

    newNode=head;

    }

           */

    }

    Hocalar burada x.number deyince başka bir sayı veriyor ben newNode diye adlandırdığım nodeun değerini versin istiyorum.Bu değer de kullanıcı tarafından atanıyor.

     


    Pragmatism&Realism
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ataturkcu1
    ataturkcu1's avatar
    Kayıt Tarihi: 20/Nisan/2007
    Erkek

     #include <iostream>

    struct node{
    	int number;
    	node *next;
    	node *previous;
    };
    struct list{
    	node *head;
    	node *tail;
    	void add(node *);
    	void create();
    	void deleteList();
    }emrah;
    using namespace std;
    int main(){
    	emrah.create();
    	cout<<"1 yaz"<<endl;
    	int secim;
    	cin>>secim;
    	if (secim==1){
    		node x;
    		emrah.add(&x);
    		cout<<x.number;
    	}
    }
    void list::create(){
    	head=NULL;
    	tail=NULL;
    }
    void list::add(node *Node){
    	Node=new node;
    	cout<<"Sayi gir"<<endl;
    	cin>>Node->number;
    	cout<number;
    	head=tail=Node;
    }
    
    Burada x.number deyince neden -982231 gibi bir değer veriyor?
    
    
    	
    
    ataturkcu1 tarafından 19/Ara/12 20:39 tarihinde düzenlenmiştir

    Pragmatism&Realism
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SyspioniC
    SyspioniC's avatar
    Kayıt Tarihi: 26/Eylül/2007
    Erkek

    yukarı^^

    konuya gelen giden olmamış :/

     


    "Derviş Yunus bu sözü eğri büğrü söyleme, Seni sorguya çeker bir Molla Kasım gelir."
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    x nodunu main içinde yerel olarak yaratmış ve adresini add metoduna yollamışsın, buraya kadar normal. Add metodunda parametre olan pointer (Node) x'in adresini gösteren her hangi bir pointer dır.

    Sen bu pointer üzerinde x ile ilgili işlem yapmak yerine, yeni bir node nesnesi yaratıp adresini bu pointer a atamışsın. Ondan sonra yapılan hiç bir işlem main içinde yaratılan x i etkilemez, yeni yaratılan nesneyi etkiler. x.number da stacktaki rastgele bir sayıyı yazar. Kullancıdan aldığın sayı ise new ile yarattığın yeni nesnede.

    Özet: "Node=new node;" satırını sil çalışır.

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    hypnot1c
    hypnot1c's avatar
    Kayıt Tarihi: 17/Mart/2008
    Erkek

    c++ bilmiyorum ama bir tahmin yazim büyük sayılarla mı işlem yapıyorsun acaba number overflow olmuş olabilir mi ?


    Nerde o eski minecraftçılar. Unutulmadın X3uqM4 - Tahribatın yanlışlıkla banlanmış en bahtsız müridi. Böyle bir şans nasıl olabilir ? Banlanmış bir üyenin login olmaya çalıştığındaki IP sini sen kalk 1 gün sonra tahribata girerken nasıl denk geldiyse onun IP siyle gir. Bunu bir admin görsün fark etsin ve AB ban ı al şaka gibi :|
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ataturkcu1
    ataturkcu1's avatar
    Kayıt Tarihi: 20/Nisan/2007
    Erkek
    Tugberk bunu yazdı

    x nodunu main içinde yerel olarak yaratmış ve adresini add metoduna yollamışsın, buraya kadar normal. Add metodunda parametre olan pointer (Node) x'in adresini gösteren her hangi bir pointer dır.

    Sen bu pointer üzerinde x ile ilgili işlem yapmak yerine, yeni bir node nesnesi yaratıp adresini bu pointer a atamışsın. Ondan sonra yapılan hiç bir işlem main içinde yaratılan x i etkilemez, yeni yaratılan nesneyi etkiler. x.number da stacktaki rastgele bir sayıyı yazar. Kullancıdan aldığın sayı ise new ile yarattığın yeni nesnede.

    Özet: "Node=new node;" satırını sil çalışır.

    Cok sagol hocam,peki surekli node eklemek istedigimden maindeki x'i node *x  x=new node diye tanimlayip fonksiyona mi gondermeliyim?


    Pragmatism&Realism
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ataturkcu1
    ataturkcu1's avatar
    Kayıt Tarihi: 20/Nisan/2007
    Erkek
    hypnot1c bunu yazdı

    c++ bilmiyorum ama bir tahmin yazim büyük sayılarla mı işlem yapıyorsun acaba number overflow olmuş olabilir mi ?


    Yok hocam @tugberk in dedigiyle alakaliymis sorun.


    Pragmatism&Realism
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek
    ataturkcu1 bunu yazdı
    Tugberk bunu yazdı

    x nodunu main içinde yerel olarak yaratmış ve adresini add metoduna yollamışsın, buraya kadar normal. Add metodunda parametre olan pointer (Node) x'in adresini gösteren her hangi bir pointer dır.

    Sen bu pointer üzerinde x ile ilgili işlem yapmak yerine, yeni bir node nesnesi yaratıp adresini bu pointer a atamışsın. Ondan sonra yapılan hiç bir işlem main içinde yaratılan x i etkilemez, yeni yaratılan nesneyi etkiler. x.number da stacktaki rastgele bir sayıyı yazar. Kullancıdan aldığın sayı ise new ile yarattığın yeni nesnede.

    Özet: "Node=new node;" satırını sil çalışır.

    Cok sagol hocam,peki surekli node eklemek istedigimden maindeki x'i node *x  x=new node diye tanimlayip fonksiyona mi gondermeliyim?

    Öncelikle new ve delete i kendin kullanmamalısın, genel mantık linked list de şudur.

    bir handle alanı vardır ve burada liste ile ilgili genel bilgiler tutulur, head tail toplam node sayısı vb, C++ da burası zaten nesnenin kendisi,  sen nesneyi yarattığında bu alan kurucu işlev tarafından ilklenir.

    Node yapısında ne olacağını zaten biliyorsun.

    sen asla node yaratmazsın, sen sadece nesnenin add metoduna, data yollarsın, mesela list.add(55), new işlemi add metodunda yapılır, yıkıcı işlev tüm node ları delete ile siler.

    Özetle main içinde

    List mylist;

    mylist.add(55);

    mylist.add(66);

    list.walk();

    vb şeklinde gitmesi lazım kodun, sen new delete node vs görmemelisin sınıfı kullanırken.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ataturkcu1
    ataturkcu1's avatar
    Kayıt Tarihi: 20/Nisan/2007
    Erkek
    Tugberk bunu yazdı
    ataturkcu1 bunu yazdı
    Tugberk bunu yazdı

    x nodunu main içinde yerel olarak yaratmış ve adresini add metoduna yollamışsın, buraya kadar normal. Add metodunda parametre olan pointer (Node) x'in adresini gösteren her hangi bir pointer dır.

    Sen bu pointer üzerinde x ile ilgili işlem yapmak yerine, yeni bir node nesnesi yaratıp adresini bu pointer a atamışsın. Ondan sonra yapılan hiç bir işlem main içinde yaratılan x i etkilemez, yeni yaratılan nesneyi etkiler. x.number da stacktaki rastgele bir sayıyı yazar. Kullancıdan aldığın sayı ise new ile yarattığın yeni nesnede.

    Özet: "Node=new node;" satırını sil çalışır.

    Cok sagol hocam,peki surekli node eklemek istedigimden maindeki x'i node *x  x=new node diye tanimlayip fonksiyona mi gondermeliyim?

    Öncelikle new ve delete i kendin kullanmamalısın, genel mantık linked list de şudur.

    bir handle alanı vardır ve burada liste ile ilgili genel bilgiler tutulur, head tail toplam node sayısı vb, C++ da burası zaten nesnenin kendisi,  sen nesneyi yarattığında bu alan kurucu işlev tarafından ilklenir.

    Node yapısında ne olacağını zaten biliyorsun.

    sen asla node yaratmazsın, sen sadece nesnenin add metoduna, data yollarsın, mesela list.add(55), new işlemi add metodunda yapılır, yıkıcı işlev tüm node ları delete ile siler.

    Özetle main içinde

    List mylist;

    mylist.add(55);

    mylist.add(66);

    list.walk();

    vb şeklinde gitmesi lazım kodun, sen new delete node vs görmemelisin sınıfı kullanırken.

    Anladim hocam.Cok sagol.


    Pragmatism&Realism
Toplam Hit: 1300 Toplam Mesaj: 9