Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- using namespace std;
- #define MAX 100 // so phan tu toi da cua queue la 5
- typedef int item;// kieu du lieu
- struct Queue
- {
- int dau, cuoi;//phan tu dau va cuoi cua queue
- item Data[MAX];// mang cac phan tu
- int count;// dem so phan tu queue
- };
- void taoQueue(Queue &q);
- bool ktQueueRong(Queue q);
- bool ktQueueMax(Queue q);
- void pushQueue(Queue &q, item x);
- int popQueue(Queue &q);
- item qdau(Queue q);
- void push_cuoihangdoivong(Queue &q, item x);
- int pop_cuoihangdoivong(Queue &q);
- void input(Queue &q);
- void output(Queue q);
- void taoQueue(Queue &q)// tao hang cho
- {
- q.dau = 0;// phan tu dau
- q.cuoi = -1;// phan tu cuoi la -1 ( khong co phan tu trong q)
- q.count = 0;// so phan tu bang 0
- }
- bool ktQueueRong(Queue q)// kiem tra hang cho co rong hay khong
- {
- if (q.count == 0)
- return true;
- else
- return false;
- }
- bool ktQueueMax(Queue q)// kiem tra hang cho da du hay chua ?
- {
- if (q.count == MAX)
- return true;
- else
- return false;
- }
- void pushQueue(Queue &q, item x)// them phan tu vao cuoi hang cho
- {
- if (ktQueueMax(q))
- cout << "hang cho da day";
- else
- {
- q.Data[++q.cuoi] = x;// tang phan tu o cuoi len va gan vao x
- q.count++; // tang so phan tu len
- }
- }
- int popQueue(Queue &q)// loai bo phan tu dau hang cho
- {
- if (ktQueueRong(q))
- cout << "hang cho rong !";
- else
- {
- item x = q.Data[q.dau];
- for (int i = q.dau; i < q.cuoi; i++)// di chuyen cac phan tu ve dau hang
- q.Data[i] = q.Data[i + 1];
- q.cuoi--;// giam vi tri phan tu cuoi xuong
- q.count--;// giam so phan tu xuong
- return x;// tra ve phan tu lay ra
- }
- }
- item qdau(Queue q)// xem thong tin dau hang cho
- {
- if (ktQueueRong(q))
- cout << "hang cho rong";
- else
- return
- q.Data[q.dau];
- }
- void push_cuoihangdoivong(Queue &q, item x)// them phan tu vao cuoi hang doi vong
- {
- if (ktQueueMax(q))
- cout << "hang doi day";
- else
- {
- q.Data[(++q.cuoi) % MAX] = x;
- // tang phan tu cuoi len va gan phan tu x vao, neu phan tu cuoi dang o vi tri MAX-1 thi tang ve vi tri 0
- q.count++;// tang so phan tu len;
- }
- }
- int pop_cuoihangdoivong(Queue &q)// loai bo phan tu dau hang doi vong
- {
- if (ktQueueRong(q))
- cout << "hang doi rong";
- item x = q.Data[q.dau];
- q.dau = (q.dau++) % MAX;//tang vi tri phan dau tien len , neu dang o MAX -1 thi ve 0
- q.count--;//giam phan tu xuong
- return x;// tra ve phan tu lay ra
- }
- void input(Queue &q)// nhap hang doi
- {
- int n;
- item x;
- do
- {
- cout << "nhap phan tu cua Queue: ";
- cin >> n;
- } while (n > MAX || n < 1);
- for (int i = 0; i < n; i++)
- {
- cout << "nhap phan tu thu " << i + 1 << ": ";
- cin >> x;
- pushQueue(q, x);
- push_cuoihangdoivong(q, x);// hang vong
- }
- }
- void output(Queue q)// xuat hang cho
- {
- if (ktQueueRong(q))
- cout << "hang cho rong";
- else
- {
- for (int i = q.dau; i <= q.cuoi; i++)
- //for (int i=q.dau,j=0;j<q.count;j++;i=(i++)
- {
- cout << " " << q.Data[i];
- cout << "\n";
- }
- }
- }
- int main()
- {
- Queue q;
- taoQueue(q);
- input(q);
- output(q);
- int lua_chon;
- cout<<"Moi ban chon phep toan voi DS LKD:";
- cout<<"\n1: Kiem tra Queue rong";
- cout<<"\n2: Kiem tra Queue day";
- cout<<"\n3: Them phan tu vao Queue";
- cout<<"\n4: Xoa phan tu trong Queue";
- cout<<"\n5: Xuat Queue";
- cout<<"\n6: Thoat";
- do
- {
- cout << "\nBan Chon: ";
- cin >> lua_chon;
- switch (lua_chon)
- {
- case 1:
- {
- if (ktQueueRong(q))
- cout << "hang cho rong\n";
- else
- cout << "hang cho khong rong\n";
- break;
- }
- case 2:
- {
- if (ktQueueMax(q))
- cout << "hang cho da day\n";
- else
- cout << "hang cho chua day\n";
- break;
- }
- case 3:
- {
- item x;
- cout << "nhap phan tu can chen vao hang cho: ";
- cin >> x;
- pushQueue(q, x);
- //push_cuoihangdoivong(q, x);
- break;
- }
- case 4:
- {
- popQueue(q);
- //pop_cuoihangdoivong(q,x);
- break;
- }
- case 5:
- {
- output(q);
- break;
- }
- case 6:
- {
- break;
- }
- }
- } while (lua_chon != 6);
- return 0;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement