Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
5
Cevap
1247
Tıklama
0
Öne Çıkarma
C++ LinkedList ile 2 veriyi yer değiştirme
F
14 yıl
Er
Konu Sahibi

Merhaba arkadaşlar
Ne yaptıysam bu 2 veriyi data kullanmadan LinkedList ile değiştiremedim

Mesela Listem {1,2} olsun

burada 1 ve 2 nin yerini değiştirmek istiyorum.

Ben aşağıdaki şekilde yapıyordum hocamız data ile değişmeyi kabul etmedi.Doğrudan templer üzerinden nasıl değiştirebilirim örnek kodu yazabilirseniz çok sevinicem algoritma içerisinde bunu uygulamam gerekior tıkandım kaldım :S
"""""""""""""""""""
node *temp=head;

temp->data=temp->next->data;
""""""""""""""""

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



G
14 yıl
Yarbay

Hocan haklı. Bağlı listede veriler değiştiril(e)mez, adresler değiştirilir. Bunları öğrenirsen yararı kendine. Yapman gereken çok basit.

node *temp = head;
head = head->next;
head->next = temp;

Normalde bu değişimden sonra listenin sonunu tekrar işaretlemek gerekir ama hocan o kadarını istemez heralde.


Bu mesaja 1 cevap geldi.
A
14 yıl
Yarbay

quote:

Orijinalden alıntı: elektro_gadget

Hocan haklı. Bağlı listede veriler değiştiril(e)mez, adresler değiştirilir. Bunları öğrenirsen yararı kendine. Yapman gereken çok basit.

node *temp = head;
head = head->next;
head->next = temp;

Normalde bu değişimden sonra listenin sonunu tekrar işaretlemek gerekir ama hocan o kadarını istemez heralde.

bu kod patlar.

1->2->3->4.. diye linkedlistin var diyelim. head 1e bakıo. head->next 2ye. senin yazdığın kodu yaparsak liste

2->1 |||| 3->4 gibisinden bişey olur devamını kaybedersin listenin. ancak 2 nodelu listte calısır o. biliyosundur zaten de konuyu açan arkadaş daha iyi anlasın diye yazıyorum.

node *temp1 = head;
node *temp2 = head->next;

head->next = head->next->next; //1in devami 3 olacak
head = temp2; //yeni head 2
head->next = temp1;//2nin devami 1

her zaman genel çözümü düşünmekte fayda var


Bu mesaja 1 cevap geldi.
F
14 yıl
Er
Konu Sahibi

tşk ederim hocam Allah razı olsun



G
14 yıl
Yarbay

Hayır patlamaz. Listede zaten 2 eleman var. Devamı olmadığı için düşünmeye gerek yok. Bu sadece bir ödev.


Bu mesaja 1 cevap geldi.
F
14 yıl
Er
Konu Sahibi

hocam ben

(1,2,3,4,5,6) soldaki listeyi birinci(2) fonksiyonla (1,2,4,5,6,3) bu hale getirmek istiorm

Birde bunun tam tersi işlemi
(1,2,3,4,5,6) soldaki listeyi ikinci(2) fonksiyonla (1,2,6,3,4,5) bu hale getirmek istiorm

bi türlü kafama giremedi bu nodeleri değiştirme işlemi :( ben dataları deişerek yapıordm hoca kabul etmedi.Node ler yer değişecek diyor nasıl olucak yardım ederseniz sevinirim.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.