Article Detail

Bağlı Listede Ekleme, Silme ve Arama
Bağlı Listede Ekleme, Silme ve Arama

Mikail Şenel  |  Veri Yapıları  |   24 Kasım 2016 |  0 |  6

Bu bölümdeki örnekte bağlı listenin başına, istenilen düğüm sonrasına ve sonuna eleman ekleme ve silmeyi, ayrıca herhangi bir elemanı bağlı listede arama ve listenin her seferinde son halini yazdırmayı göreceğiz.

Kurucu Metodumuz:

public class Eleman {
 int sayi;
 Eleman sonraki;
 public void setSonraki(Eleman e){
    this.sonraki=e;
 }
 public Eleman getSonraki(){
    return this.sonraki;
 }
 public void setSayi(int sayi){
    this.sayi=sayi;
 }
 public int getSayi(){
    return sayi;
 }
}

Çağırma Metodumuz:

public class ElemanCall {

 Eleman bas=null,son=null;
 public static void main(String[] args) {
    int secim,input;
    ElemanCall elemancall=new ElemanCall();
    do
    {    
       System.out.println("1. Liste başına ekle");
       System.out.println("2. Liste sonuna ekle");
       System.out.println("3. Liste başından sil");
       System.out.println("4. Liste sonundan sil");
       System.out.println("5. Liste eleman sayısı");
       System.out.println("6. Listede ara");
       System.out.println("7. Liste yaz");
       System.out.println("8. Listeden değer sil ");
       System.out.println("9. Listede ara ve bir sonraki düğüme ekle");
       System.out.println("10. Çıkış");
 
       System.out.println("İstediğiniz komutu giriniz: ");
       Scanner scan = new Scanner( System.in);
       secim = scan.nextInt();
  
       switch (secim) {
          case 1:
              System.out.println("Liste başına eklenecek yeni değeri giriniz: ");
              input = scan.nextInt();
              elemancall.ListeBasinaYaz(input);
              break;
          case 2:
              System.out.println("Liste sonuna eklenecek yeni değeri giriniz: ");
              input = scan.nextInt();
              elemancall.ListeSonunaYaz(input);
              break;
          case 3:
              System.out.println("Liste başındaki " +elemancall.ListeBasindanSil()+ " silindi");
              break;
          case 4:
              System.out.println("Liste sonundaki "+elemancall.ListeSonundanSil()+ " silindi");
              break;
          case 5:
              System.out.println("Liste " +elemancall.ListedekiElemanSayisi() +" adet eleman vardır.");
              break;
          case 6:
              System.out.println("Aradığınız int değerini giriniz: ");
              input = scan.nextInt();
              int sonuc = elemancall.ListedeAra(input);
              if(sonuc==-1)
                  System.out.println("**** Listede değer bulunamamıştır. *** ");
              else
                  System.out.println("Aranan değer " + sonuc + ". sıradadır.");
              break;
          case 7:
              elemancall.ListeYaz();
              break;
          case 8:
              System.out.println("Silmek istediğiniz int değerini giriniz: ");
              input = scan.nextInt();
              int sonuc1 = elemancall.ListedenSil(input);
              if(sonuc1==-1)
                   System.out.println("**** Listede değer bulunamamıştır. *** ");
              else
                   System.out.println("Aranan değer " + sonuc1 + ". sırada bulundu ve silindi");
                   break;
          case 9:
              System.out.println("Hangi Sayıdan sonra eklemek istersiniz: ");
              input = scan.nextInt();
              System.out.println("Hangi sayıyı eklemek istersiniz: ");
              input2=scan.nextInt();
              elemancall.ListedeistenilenYereEkle(input,input2);
              break;
          case 10:
              break;
          default:
              System.out.println("Geçersiz işlem");
              break;
       }
    } while(secim!=10); 
 }
 void ListeBasinaYaz(int sayi){
    Eleman yeniEleman=new Eleman();
    yeniEleman.setSayi(sayi);
    if(bas==null){
       bas=yeniEleman;
       bas.setSonraki(son);
       son=yeniEleman;
       son.setSonraki(null);
       return;
    }
    Eleman temp=bas;
    bas=yeniEleman;
    bas.setSonraki(temp); 
    son.setSonraki(null);
 }
 void ListeYaz(){
    Eleman temp=bas;
    System.out.println("------Bağlı Liste------");
    while(temp!=null){
       System.out.println(temp.getSayi());
       temp=temp.getSonraki();
    }
    System.out.println("-----------------------");
 }
 void ListeSonunaYaz(int sayi){
    Eleman yeniEleman=new Eleman();
    yeniEleman.setSayi(sayi);
    if(bas==null){
       bas=yeniEleman;
       bas.setSonraki(son);
       son=yeniEleman;
       son.setSonraki(null);
       return;
    }
    Eleman temp=son;
    son.setSonraki(yeniEleman);
    son=yeniEleman;
    son.setSonraki(null);
 }
 int ListeBasindanSil(){
    int don=0;
    if(bas==null){
       System.out.println("Liste Boş");
    }else{
       Eleman temp=bas;
       bas=temp.getSonraki();
       don=temp.getSayi();
    }
    return don;
 }
 int ListeSonundanSil(){
    int don=0;
    if(bas==null){
       System.out.println("Liste Boş");
    }else{
       Eleman temp=bas;
       while(temp.getSonraki()!=son){
          temp=temp.getSonraki();
       }
       don=son.getSayi();
       son=temp;
       son.setSonraki(null);
    }
    return don;
 }
 int ListedekiElemanSayisi(){
    Eleman temp=bas;
    int don=0;
    while(temp!=null){
       temp=temp.getSonraki();
       don++;
    }
    return don;
 }
 int ListedeAra(int sayi){
    Eleman temp=bas;
    int counter=0;
    while(temp!=null){
       counter++;
       if(temp.getSayi()==sayi){
          return counter;
       }
       temp=temp.getSonraki(); 
    }
    return -1;
 }
 int ListedenSil(int sayi){
    Eleman temp=bas;
    Eleman birOnceki;
    int counter=0;
    while(temp!=null){
       counter++;
       if(temp.getSonraki().getSayi()==sayi){
          counter++;
          birOnceki=temp;
          birOnceki.setSonraki(temp.getSonraki().getSonraki());
          return counter;
       }
       temp=temp.getSonraki();
    }
    return -1;
 }
void ListedeistenilenYereEkle(int searchnumber,int sayi){
    Eleman yeniEleman=new Eleman();
    yeniEleman.setSayi(sayi);
    Eleman temp=bas;
    if(bas==null){
       System.out.println("Liste Boş");
       return;
    }
    while(temp.getSayi()!=searchnumber){
       temp=temp.getSonraki();
    }
    yeniEleman.setSonraki(temp.getSonraki());
    temp.setSonraki(yeniEleman);
    System.out.println(sayi+" eklendi"); 
 }
}

Share :


Yorum Yap