Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- using namespace std;
- typedef int item;
- struct Node// tao node
- {
- item Data;
- Node *next;
- };
- struct stack
- {
- Node *top;
- };
- void taostack(stack &s);
- bool ktstackRong(stack s);
- int dodaistack(stack s);
- void pushstack(stack &s, item &x);
- int peekstack(stack s);
- void input(stack &s);
- void output(stack s);
- Node *CreateNode(item x);
- void taostack(stack &s)// tao stack
- {
- s.top = NULL;
- }
- bool ktstackRong(stack s) // kiem tra stack co rong hay khong ?
- {
- if (s.top == NULL)
- return true;
- else
- return false;
- }
- int dodaistack(stack s) // kiemtra do dai cua stack
- {
- Node *p = s.top;
- int l = 0;
- while (p!=NULL)// trong khi chua het stack thi van duyet
- {
- l++;
- p = p->next;
- }
- return l;
- }
- Node *CreateNode(item x)// tao node
- {
- Node *p = new Node;
- if (p == NULL)
- {
- return p;
- }
- else
- {
- p->Data = x;
- p->next = NULL;
- }
- }
- void pushstack(stack &s, item &x)// them phan tu dau vao stack
- {
- Node *p = CreateNode(x);
- p->next = s.top;
- s.top = p;
- }
- int peekstack(stack s)// lay phan tu dau nhung khong xoa
- {
- return s.top->Data;
- }
- int popstack(stack &s)// lay phan tu dau roi xoa
- {
- if (!ktstackRong(s))
- {
- item x = s.top->Data;// luu lai gia tri
- s.top = s.top->next;//xoa phan tu top
- return x;
- }
- }
- void input(stack &s)//nhap
- {
- int i = 0;
- item x;
- cout << "***NHAP PHAN TU,NHAP 0 DE KET THUC\n";
- do
- {
- i++;
- cout << "nhap phan tu thu " << i << ": ";
- cin >> x;
- if (x != 0)
- {
- pushstack(s, x);
- }
- } while (x != 0);//nhap 0 de ket thuc
- }
- void output(stack s)
- {
- Node *p = s.top;
- while (p != NULL)
- {
- cout << " " << p->Data;
- p = p->next;
- }
- cout << "\n";
- }
- int main()
- {
- stack s;
- taostack(s);
- input(s);
- output(s);
- int Lua_chon;
- cout << "Moi ban cho va xu li stack voi DS LKD:";
- cout << "\nNhan 1: Kiem Tra Stack Rong";
- cout << "\nNhan 2: Do Dai Stack";
- cout << "\nNhan 3: Them Phan Tu Vao Dau Stack";
- cout << "\nNhan 4: Xoa Phan Tu Trong Stack";
- cout << "\nNhan 5: Xuat Stack";
- cout << "\nNhan 6: De Thoat";
- do
- {
- cout << "\nBan Chon: ";
- cin >> Lua_chon;
- switch (Lua_chon)
- {
- case 1:
- {
- if (ktstackRong(s))
- cout << "stack rong";
- else
- cout << "stack khong rong";
- break;
- }
- case 2:
- {
- cout << "do dai stack la: " << dodaistack(s);
- break;
- }
- case 3:
- {
- item x;
- cout << "nhap phan tu can chen vo DS: ";
- cin >> x;
- pushstack(s, x);
- break;
- }
- case 4:
- {
- popstack(s);
- break;
- }
- case 5:
- {
- output(s);
- break;
- }
- case 6:
- {
- break;
- }
- }
- } while (Lua_chon != 6);
- return 0;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement