Aracılığıyla paylaş


Yığın ve Kuyruk Koleksiyonları Oluşturma

Bu makalede, MFC liste sınıflarından yığınlar ve kuyruklar gibi diğer veri yapılarının nasıl oluşturulacağı açıklanmaktadır. Örneklerde CList öğesinden türetilen sınıflar kullanılır, ancak işlevsellik eklemeniz gerekmediği sürece CList öğesini doğrudan kullanabilirsiniz.

Yığınlar

Standart liste koleksiyonunun hem başı hem de kuyruğu olduğundan, bir son ilk çıkan yığının davranışını taklit eden türetilmiş bir liste koleksiyonu oluşturmak kolaydır. Bir yığın, kafeteryadaki tepsilerden oluşan bir yığın gibidir. Tepsiler yığına eklendikçe yığının tepesine yerleştirilir. Eklenen son tepsi, kaldırılacak ilk tepsidir. Liste koleksiyonu üyesi işlevleri AddHead ve RemoveHead özellikle listenin başından öğe eklemek ve kaldırmak için kullanılabilir; bu nedenle, en son eklenen öğe kaldırılacak ilk öğedir.

Bir yığın koleksiyonu oluşturmak için

  1. Mevcut MFC liste sınıflarından birinden yeni bir liste sınıfı türetin ve yığın işlemlerinin işlevselliğini desteklemek için daha fazla üye işlevi ekleyin.

    Aşağıdaki örnekte, öğeleri yığına göndermek, yığının üst öğesine göz atmak ve yığından üst öğeyi açmak için üye işlevlerinin nasıl ekleneceği gösterilmektedir:

    class CTray : public CObject { };
    
    class CStack : public CTypedPtrList< CObList, CTray* >
    {
    public:
       // Add element to top of stack
       void Push(CTray* newTray)
       {
          AddHead(newTray);
       }
    
       // Peek at top element of stack
       CTray* Peek()
       {
          return IsEmpty() ? NULL : GetHead();
       }
    
       // Pop top element off stack
       CTray* Pop()
       {
          return RemoveHead();
       }
    };
    

Bu yaklaşımın temel sınıfı CObList ortaya çıkardığını unutmayın. Kullanıcı, bir yığın için anlamlı olsa da olmasa da herhangi bir CObList üye işlevini çağırabilir.

Kuyruklar

Standart liste koleksiyonunun hem baş hem de kuyruğu olduğundan, ilk çıkan kuyruğun davranışını taklit eden türetilmiş bir liste koleksiyonu oluşturmak da kolaydır. Kuyruk, kafeteryadaki insanlar gibidir. Satırdaki ilk kişi, ilk hizmet edilecek kişidir. Daha fazla insan geldikçe sıranın sonuna gidip sıralarını beklerler. Liste koleksiyonu üyesi işlevleri AddTail ve RemoveHead özellikle listenin başından veya kuyruğundan öğe eklemek ve kaldırmak için kullanılabilir; bu nedenle, en son eklenen öğe her zaman kaldırılacak son öğedir.

Kuyruk koleksiyonu oluşturmak için

  1. Microsoft Foundation Sınıf Kitaplığı ile sağlanan önceden tanımlanmış liste sınıflarından birinden yeni bir liste sınıfı türetin ve kuyruk işlemlerinin semantiğini desteklemek için daha fazla üye işlevi ekleyin.

    Aşağıdaki örnek, kuyruğun sonuna öğe eklemek ve kuyruğun önünden öğeyi almak için üye işlevlerini nasıl ekleyebileceğinizi gösterir.

    class CQueue : public CTypedPtrList< CObList, CPerson* >
    {
    public:
       // Go to the end of the line
       void AddToEnd(CPerson* newPerson)
       {
          AddTail(newPerson);
       }        // End of the queue
    
    // Get first element in line
       CPerson* GetFromFront()
       {
          return IsEmpty() ? NULL : RemoveHead();
       }
    };
    

Ayrıca bakınız

Koleksiyonlar