Bagikan melalui


Membuat Kumpulan Tumpukan dan Antrean

Artikel ini menjelaskan cara membuat struktur data lain, seperti tumpukan dan antrean, dari kelas daftar MFC. Contohnya menggunakan kelas yang berasal dari CList, tetapi Anda dapat menggunakan CList secara langsung kecuali Anda perlu menambahkan fungsionalitas.

Tumpukan

Karena koleksi daftar standar memiliki kepala dan ekor, mudah untuk membuat koleksi daftar turunan yang meniru perilaku tumpukan terakhir masuk, pertama keluar. Tumpukan seperti setumpuk nampan di kafetaria. Saat baki ditambahkan ke tumpukan, baki ditempatkan di bagian atas tumpukan. Baki terakhir yang ditambahkan adalah yang pertama dihapus. Fungsi anggota dalam koleksi daftar AddHead dan RemoveHead dapat digunakan untuk menambahkan dan menghapus elemen terutama dari bagian depan daftar; dengan demikian, elemen yang terakhir ditambahkan adalah elemen yang pertama dihapus.

Untuk membuat kumpulan stack

  1. Dapatkan kelas daftar baru dari salah satu kelas daftar MFC yang ada dan tambahkan lebih banyak fungsi anggota untuk mendukung fungsionalitas operasi tumpukan.

    Contoh berikut menunjukkan cara menambahkan fungsi anggota untuk menempatkan elemen ke dalam tumpukan, melihat elemen teratas tumpukan, dan mengeluarkan elemen teratas dari tumpukan:

    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();
       }
    };
    

Perhatikan bahwa pendekatan ini mengekspos kelas yang mendasar CObList . Pengguna dapat memanggil fungsi anggota mana pun CObList, terlepas dari apakah itu masuk akal untuk sebuah tumpukan atau tidak.

Antrean

Karena koleksi daftar standar memiliki kepala dan ekor, juga mudah untuk membuat koleksi daftar turunan yang meniru perilaku antrean FIFO (first-in-first-out). Antrean seperti barisan orang di kantin. Orang pertama yang mengantri adalah orang pertama yang dilayani. Ketika lebih banyak orang datang, mereka pergi ke akhir baris untuk menunggu giliran mereka. Fungsi anggota dari kumpulan daftar AddTail dan RemoveHead dapat digunakan untuk menambahkan dan menghapus elemen secara khusus dari kepala atau ekor daftar; dengan demikian, elemen yang paling baru ditambahkan selalu merupakan elemen yang terakhir dihapus.

Untuk membuat koleksi antrean

  1. Mendapatkan kelas daftar baru dari salah satu kelas daftar yang telah ditentukan sebelumnya yang disediakan dengan Microsoft Foundation Class Library dan menambahkan lebih banyak fungsi anggota untuk mendukung semantik operasi antrean.

    Contoh berikut menunjukkan bagaimana Anda dapat menambahkan fungsi anggota untuk menambahkan elemen ke akhir antrean dan mendapatkan elemen dari depan antrean.

    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();
       }
    };
    

Lihat juga

Koleksi