Bağlı Liste Oluşturma Ve Kullanma(EKLE SİL) - SOFTSAM

Breaking

About Software

6.10.2016

Bağlı Liste Oluşturma Ve Kullanma(EKLE SİL)



Düğüm Sınıfı

using System;
//SOFTSAM
namespace Bagliliste { class node // düğüm sınıfı her bir düğümde tutlması gereken verilerimizi barındıracak { private int data;// verilerimizi tutacak bir tamsayı değişkeni private node next;//bir sonraki düğümü bilmemiz gereken durumlara karşı ve düğümleri birbirine bağlamak için kullanılacak veri private node previous;//bir önceki düğümü bilmemiz gereken durumlara karşı ve düğümleri birbirine bağlamak için kullanılacak veri //data değişkenimizi doldurmak için bir constructer oluşturduk public node(int data) { this.data = data; } //Değişkenlerimize direk ulaşmalarını engellemek adına verilerimizi properties haline getirdik #region Properties public node Previous { get { return previous; } set { previous = value; } } public int Data { set { this.data = value; } get { return data; } } public node Next { get { return next; } set { this.next = value; } } #endregion } }

Bağlı Liste Sınıfı
using System;

//SOFTSAM
namespace Bagliliste { class MyLinkedList { public node first { get; set; } // dizimizin ilk elemanını bilmeliyiz ki işlemlerimizi yapmaya başlayacağımız bir referans noktamız olsun public node last { get; set; }//dizimizin son elemanını da sondan ekleme yada çıkrma yaparken işlemin O(1) de gerçekleşmesi için tutuyoruz //Ekleme işlemlerini Gerçekleştireceğimiz metodlar #region SOFTSAMAdditionintoLinkedList public void push_back(int data)//sondan ekleme işlemi { node new_node = new node(data);//yeni bir veri demek yeni bir düğüm demek new_node.Next = null;//sondaki veri olduğu için bundan sonra veri olmayacağı için null yaptık if (first == null)// ilk veri boş ise yani dizi boş ise verinin dizinin ilk elemanı olduğunu bilmeliyiz { first = new_node; first.Previous = null;//ilk elemandan öncesi olmayacak dizilerde 0. indisten öncesi yoktur gibi bir mantıkla düşünebiliriz last = new_node;//bu düğüm baş olamkla birlikte tek düğüm olduğundan son elemandırda int[] a={1}; tanımlamasında 1 elemanının hem ilk hem son olması gibi } else //null değilse bu elemandan önce eleman var demektir { last.Next = new_node; new_node.Previous = last; last = new_node; } } public void push_front(int data)//önden ekleme { node new_node = new node(data); if (first == null)//dizi boş ise buradaki işlemler yapılacak { first = new_node; last = null; } else // boş değilse { first.Previous = new_node;// ilk elemanım artık değişecek ve yeni gelen eleman olacak new_node.Next = first;//ve bir sonraki eleman artık önceki ilk eleman oldu örneğimizden devam edersek int[] a={1}; 1 ilk elemandı //biz int[] a={0,1}; şeklinde ilk sıraya eleman eklersek 1 in 0 dan sonra geldiğini görürüz new_node.Previous = null; first = new_node; } } public void push_to(int data)// listeye küçükten büyüğe doğru sıralama şeklinde veri ekler { node new_node = new node(data); node t = first; while (t != null && t.Data < new_node.Data) // arama işlemi yapılacak ve bulunmazsa t değeri null dönecek bunu da kontrol altına aldık t = t.Next; if (t == null)// bulamadığı için veri en sona eklenecek push_back(data); else if (t.Previous == null && t.Data > new_node.Data)//en başta olması durumunda veri başa eklenecek { push_front(data); } else //aksi halde veri aralara ekelencektir { new_node.Previous = t.Previous; // düğümler arası bağlantılar sağlanıyor new_node.Next = t; t.Previous.Next = new_node; t.Previous = new_node; } } #endregion #region SOFTSAMRemoveDataFromLinkedList public void pop() // sondaki veriyi listeden atmak için { last = last.Previous;// sondaki veri artık sonun bir öncesi olmalı int[] a={1,2,3}; ifadesinde 3 ü görmezden gelmesini sağlamak için last.Next = null;//sonrasında veri olmadığına inandırmalıyız } public void remove_first()//en baştaki veriyi listeden atmak için { first = first.Next; first.Previous = null; } public int remove_data(int data)//silmek istediğimiz datayı belirtip silinen veri sayısını döndürüyoruz ilk veriyi bulup sildiğinde çıkacaktır { node t = first; while ( t != null && t.Data != data) //arama işlemi t = t.Next; if (t == null) return 0; if (t.Previous == null) remove_first(); else if (t.Next == null) pop(); else { t.Next.Previous = t.Previous;//arada ise silme işlemi t.Previous.Next = t.Next; } return 1; } #endregion public void printLinkedList() { node t = first; while (t != null) { Console.WriteLine(t.Data); t = t.Next; } } } }

Program.cs Main Metodu

using System;
//SOFTSAM
namespace Bagliliste
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5, b = 6, c = 7;
            MyLinkedList mls=new MyLinkedList();
            mls.push_back(a);
            mls.push_back(b);
            mls.push_back(c);
            mls.printLinkedList();
          
            Console.WriteLine("\n\n\n");
            mls.push_front(11);
            mls.push_front(1);
            mls.push_to(10);
            mls.pop();
            mls.remove_first();
            mls.remove_data(10);
            mls.printLinkedList();
            Console.ReadKey();

        }
    }
}




Hiç yorum yok:

Yorum Gönder