Bagikan melalui


Membuat Koleksi 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 menipu perilaku tumpukan last-in-first-out. Tumpukan seperti tumpukan baki di kantin. Saat baki ditambahkan ke tumpukan, baki berada di atas tumpukan. Baki terakhir yang ditambahkan adalah yang pertama dihapus. Anggota kumpulan daftar berfungsi AddHead dan RemoveHead dapat digunakan untuk menambahkan dan menghapus elemen khususnya dari kepala daftar; dengan demikian, elemen yang terakhir ditambahkan adalah yang pertama dihapus.

Untuk membuat koleksi tumpukan

  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 mendorong elemen ke tumpukan, mengintip elemen atas tumpukan, dan memunculkan elemen atas 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 apa pun CObList , apakah masuk akal untuk tumpukan atau tidak.

Antrean

Karena koleksi daftar standar memiliki kepala dan ekor, juga mudah untuk membuat koleksi daftar turunan yang menipu perilaku antrean 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. Anggota kumpulan daftar berfungsi AddTail dan RemoveHead dapat digunakan untuk menambahkan dan menghapus elemen khususnya dari kepala atau ekor daftar; dengan demikian, elemen yang terakhir ditambahkan selalu 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();
       }
    };
    

Baca juga

Koleksi