Java ile LinkedList (Düzenli Ekleme, Silme, Araya Ekleme)


Evet arkadaşlar bugün sizlerle Java ile LinkedList (Düzenli Ekleme, Silme, Araya Ekleme) işlemlerini yapacağız. Tabi bunu yaparken bağlı listeye düzenli ekleme kısmını yapamadım tam olarak ama kendime göre düzenlemelerim bulunmakta.
 !>Eğer sizin bir çözümünüz var ise bana yan taraftan mail atabilir, yada alta yoruma yazabilirsiniz.<! 

Hadi başlayalımm >>> >>> >>>

public class LinkedList {
    
    //Burada tanımladık.
    Node head; //node sınıfını oluşturana kadar hata verir (eğer baştan yazacaksanız.)
    
    //burada Node sınıfını olusturduk
    static class Node { 
        
        int data;  //bu verimizi tutacak bizim için
        Node next;  // bu sonraki node'un değerini tutacak
  
        // Constructor'ımız burada
        Node(int d) 
        { 
            data = d; 
            next = null; 
        } 
    } 
    
    //Burada Bağlı listeye ekleme yapacağız.
    public static LinkedList insert(LinkedList list, int data) { 
        // Yeni bir node oluşturuyoruz veriyle beraber.
        Node new_node = new Node(data); 
        //Devamını null yapıyoruz çünkü boş devamı.
        new_node.next = null; 
  
        // Eğer linkedlist boş ise
        // o zaman yeni node'u head yapalım.
        if (list.head == null) { 
            list.head = new_node; 
        } 
        else { 
            //Eğer değilse sona kadar gidelim
            Node last = list.head; 
            while (last.next != null) { 
                //Sonun devamı olmadığı için şimdi buraya girdik.
                last = last.next; 
            } 
            //Yeni node'u ekleyelim şimdi devamına.
            last.next = new_node; 
        }  
        // Listeyi döndürelim değer olarak.
        return list; 
    }
    
    //Üstte yaptığımız normal bir ekleme fonksiyonu, herhangi bir ekstra durumu yok
    
    public static LinkedList araya_ekleme(LinkedList list, int data,int bolum) {
        // yine ayni sekilde yeni bir node olusturuyoruz burada.
         Node new_node = new Node(data);
         new_node.next = null;
         Node temp;
         int step=0;
         
         
         if (list.head == null) { 
            list.head = new_node; 
         }
         else{
            Node last = list.head; 
            while (last.next != null) { 
                step++;
                //Burada amacımız eklemek istediğimiz sıraya eklemektir.
                if(step != bolum-1){
                    last = last.next;
                }
                else{
                    new_node.next = last.next;
                    last.next = new_node;
                }
            }
            
         }      
        return list; 
    }
    
    //Burada bas kismi nasil isin icine katacagim tam bilmiyorum.
    //O yüzden printlist kısmını kendime göre düzenleyeceğim bilginize
    //Anlarsınız durumu zaten
    
    public static LinkedList duzenli_sirali_ekleme(LinkedList list, int data) {
        // yine ayni sekilde yeni bir node olusturuyoruz burada.
         Node new_node = new Node(data);
         int first = 1;
         
         Node last = list.head;
         if (list.head == null) { 
            list.head = new_node;
            return list;
         }
         else if(list.head.next ==null){
             if(new_node.data < last.data){
                 Node temp = new Node(last.data);
                 new_node.next = last.next;
                 new_node.next = temp;
                 last.next = new_node;
             }
         }
         else{
            last = list.head;
            while (last.next != null) {
                    if(new_node.data < last.next.data){
                        break;
                    }
                    else{
                        last = last.next;
                    }
            }
            new_node.next = last.next;
            last.next = new_node;
            
         }
        return list;
        //Normalde burada başta fazladan gereksiz bir node var ama
        //bunu tam olarak nasıl sileceğimi bilmiyorum, düzenli eklemede bir problem çıktı öyle kalsın
    }
    
    public static LinkedList data_ile_silme(LinkedList list, int data) {
        
         if (list.head == null) { 
             System.out.println("Veri yok.");
         }
         if(list.head.data == data){
             list.head = list.head.next;
         }
         else{
            Node last = list.head; 
            while (last.next != null) { 
                if(last.next.data == data){
                    last.next = last.next.next;   
                }
                else{
                    last = last.next;
                }
            } 
         }      
        return list; 
    }
    
    
    // Listeyi ekranda göstermemiz lazım bir de. 
    // Burada düzenli sıralama kısmı bulunmaktadır. 
    // Bunun amacı eğer biz sıralama işlemi yaptırmışsak kodda ve
    // bunu yazdıracaksak liste olarak, bizim düzenli sıralama
    // kodumuzun başında gereksiz veri olduğu için yazdırırken bunu es geçiyoruz.
    // BENDE KOD KALABALIĞI YERİNE BOOLEAN ÇÖZÜMÜNE BAŞVURDUM.
    // (en azından dizinin harcadığı gereksiz veri kadar verimiz yok be reis).
    public static void printList(LinkedList list,boolean duzenli_siralama) 
    { 
        //Şuanki yeri head node'u yapalım ilk başta
        Node currNode = list.head;
        if(duzenli_siralama == true){
            currNode = list.head.next;
        }
        
   
        System.out.print("LinkedList: "); //Listeyi okuyacağız şimdi, başına bunu getirmiş olalım.
   
        // Node'umuz null değeri alana kadar gidelim.
        while (currNode != null) { 
            //Giderken yazdıralım bunları.
            System.out.print(currNode.data + " "); 
   
            // İleriye gitme olayı burada olmaktadır.
            currNode = currNode.next; 
        } 
    } 
   
    // Driver code 
    public static void main(String[] args) 
    { 
        //Boş bir listeyle başlayalım ilk başta.
        LinkedList list = new LinkedList();
        LinkedList sirali = new LinkedList();
        boolean duzenliDegil = false;
        boolean duzenli = true;
  
        // Yeni değerler ekleyelim.
        list = insert(list, 1); 
        list = insert(list, 2); 
        list = insert(list, 3); 
        list = insert(list, 4); 
        list = insert(list, 5); 
        list = insert(list, 6); 
        list = insert(list, 7); 
        list = insert(list, 8);
        list = data_ile_silme(list, 1);
  
        //Ekrana yazdıralım.
        printList(list,duzenliDegil); 
        System.out.println("\n--------------\n");
        
        //Ucuncu yere ekleme yapiyor boyle :)
         list = araya_ekleme(list, 404, 3); 
         printList(list,duzenliDegil); 
         
         System.out.println("\n--------------\n");
         //Sirali bir sekilde ekleme yapalim bu sefer de.
         sirali = duzenli_sirali_ekleme(sirali, 700); 
         sirali = duzenli_sirali_ekleme(sirali, 500); 
         sirali = duzenli_sirali_ekleme(sirali, 200); 
         sirali = duzenli_sirali_ekleme(sirali, 600); 
         sirali = duzenli_sirali_ekleme(sirali, 400);
         sirali = duzenli_sirali_ekleme(sirali, 1000);
         sirali = duzenli_sirali_ekleme(sirali, 900); 
         printList(sirali,duzenli);
         //simdi silme islemini yapalim simdi.
         
         System.out.println("Simdi silme islemi yapalim!\n-----------\n");
         sirali = data_ile_silme(sirali, 900);
         sirali = data_ile_silme(sirali, 600);
         printList(sirali,duzenli);
         System.out.println("Burada iki sayiyi silmis bulunmaktayiz.");
         
         //Bu kodda baş kısmı nasıl sileceğimi bulamadım
    } 

}

Evet şimdi çıktımızı görelim sırada, ne çıktı veriyor bu kodumuz.
>>> >>> >>> >>> >>>


Yorumlar

Bu blogdaki popüler yayınlar

Python ile Turtle Kütüphanesiyle Çizim Denemesi 2

Girdimize en yakın palindrom değeri bulan program (Python3 ile)

Python ile Yazıyı Piramit Gibi Çizdirme