SlideShare a Scribd company logo
Стек, түүнийг массив
ашиглан зохион байгуулах
         Лекц №10
                    LOGO
Хичээлийн агуулга




Багш: В.Нямсүрэн
Стек /Stack/
 Жагсаалтын бүтцүүдийн хувьд элемэнтийг
  нэмэх, устгах гэх мэтийн элемэнтэд хандах
  үйлдэл нь дурын байрлалд гүйцэтгэгдэж байсан.

 Тэгвэл  зарим   өгөгдлийн бүтцийн   хувьд
  элемэнтэд хандах үйлдэл нь хязгаарлагдмал
  байдаг.

 Ийм хязгаарлагдмал хандалт бүхий өгөгдлийн
  бүтцийн нэг бол стек юм.


Багш: В.Нямсүрэн
Стек
 Элемэнтийг устгах ба нэмэх үйлдэл нь орой гэж
  нэрлэгдэх нэг талаасаа хийгддэг шугаман
  тогтцыг стек гэнэ.

 Үүнийг LIFO төрөл гэж ч нэрлэдэг. Энэ нь Last In
  First Out буюу сүүлд орсон нь эхэлж гарна гэсэн
  үг юм.

 Хэдийгээр стек нь маш хязгаарлагдмал
  үйлдэлтэй боловч компьютерийн програмчлалд
  чухал үүрэгтэй өгөгдлийн бүтцүүдийн нэг юм.

Багш: В.Нямсүрэн
Амьдрал дээрх стекийн жишээ:


   Хоолны                           Гутлын
 тавиуруудын                    хайрцагнуудын
     стек                            стек




                   Зооснуудын
                                                 Цэвэрхэн
                      стек
                                                  эвхсэн
                                                цамцнуудын
                                                   стек


Багш: В.Нямсүрэн
Стекийг нэвтрүүлэх аргууд
Стекийг програмд олон ялгаатай аргаар нэвтрүүлж
боловч ихэвчлэн
        • Шугаман массив
        • Нэг холбоост ашигладаг.
 Шугаман массив ашиглан нэвтрүүлсэн стек нь
  компляцийн үед статикаар тодорхойлогдох
  өгөөд статик стекийн нийт хэмжээ нь тогтмол
  байдаг
 Нэг ашиглан нэвтрүүлсэн стек нь програм
  ажиллах явцад динамикаар тодорхойлогдох
  бөгөөд динамик стекийн хэмжээ нь өөрчлөгдөж
  байдаг.
Багш: В.Нямсүрэн
Стекийн массиваар
илэрхийлэх хийсвэрлэлт
өгөгдөл:
Стекийн


            • Стекийн өгөгдөл      / *stack /
            • Стекийн хэмжээ       / MaxSize /
            • Cтекийн орой         / top /



            •   Стект элемэнт нэмэх              /push/
Стекийн
үйлдэл:




            •   Стекээс элемэнтийг авах          /pop/
            •   Стек хоосон эсэхийг шалгах       /isempty/
            •   Стек дүүрсэн эсэхийг шалгах      /isfull/
            •   Стекийг элемэнтүүдийг харах       /view/

Багш: В.Нямсүрэн
Стекийг массиваар
илэрхийлэх хийсвэрлэлт


Массив
                                   Оройн индекс
                           Стекийн орой




                    Стек




Багш: В.Нямсүрэн
Cтекийг массиваар илэрхийлэх
хийсвэр төрлийг тодорхойлох
class Stack{
    int top,MaxSize;
    Type*stItems;
public:
    Stack(int Msize);
    ~Stack();
    bool push(Type item);
    bool pop(Type &item);
    bool isempty();
    bool isfull();
    void view();
};

Багш: В.Нямсүрэн
Cтекийг үүсгэх
байгуулагч функц:
 Stack::Stack(int Msize){
      MaxSize=Msize;
      stItems=new Type[MaxSize];
      top=-1;
 }
 Тайлбар:
 Stack st(10);
 10 хэмжээтэй st гэсэн нэртэй стекийг үүсгэж байна.




Багш: В.Нямсүрэн
Cтекийг үүсгэх
байгуулагч функц:
   MaxSize         10
   stItems

         top       -1   0
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9



Багш: В.Нямсүрэн
Стекийг санах ойгоос
чөлөөлөх устгагч функц:

  Stack::~Stack(){
      delete[] stItems;
  }




Багш: В.Нямсүрэн
Стекийг санах ойгоос
чөлөөлөх устгагч функц:
   MaxSize         10
   stItems

         top       -1     0
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9



Багш: В.Нямсүрэн
Стекийг хоосон
эсэхийг шалгах
 bool Stack::isempty(){
     if(top<0)
          return true;
     else
          return false;
 }




Багш: В.Нямсүрэн
Стекийг хоосон
эсэхийг шалгах
   MaxSize         10
   stItems

         top       -1   0
                        1
                        2
                        3

    Top      хувьсагч   4
                        5
    буюу оройн утга     6
    0-ээс бага тул      7
    стек      хоосон    8
    буюу true утга      9
    буцаана.
Багш: В.Нямсүрэн
Стекийг хоосон
эсэхийг шалгах
   MaxSize         10
   stItems

         top       2    0   A
                        1   Z
                        2   K
                        3

    Top      хувьсагч   4
                        5
    буюу оройн утга     6
    0-ээс их тул стек   7
    хоосон биш буюу     8
    false        утга   9
    буцаана.
Багш: В.Нямсүрэн
Стекийг дүүрэн
эсэхийг шалгах
  bool Stack::isfull(){
      if(top>=MaxSize-1)
           return true;
      else
           return false;
  }




Багш: В.Нямсүрэн
Стекийг дүүрэн
эсэхийг шалгах
   MaxSize         10
   stItems

         top       2    0   A
                        1   Z
                        2   K
    Top      хувьсагч   3
    буюу оройн утга     4
    MaxSize-1-ээс       5
    бага тул стек       6

    дүүрэн биш буюу     7
                        8
    false        утга
                        9
    буцаана.

Багш: В.Нямсүрэн
Стекийг дүүрэн
эсэхийг шалгах
   MaxSize         10
   stItems

         top       9    0   A
                        1   Z
                        2   K
    Top      хувьсагч   3   C
    буюу оройн утга     4   H
    MaxSize-1-тэй       5   L
    тэнцүү тул стек     6   Y
                            O
    дүүрэн      буюу    7
                        8   N
    true         утга
                        9   W
    буцаана.

Багш: В.Нямсүрэн
Стект элемэнт нэмэх
  bool Stack::push(Type item){
      if(isfull()){
           cout<<"Stack duuren"<<endl;
           return false;
      }
      else{
           stItems[++top]=item;
           return true;
      }
  }



Багш: В.Нямсүрэн
Стект элемэнт нэмэх
Тайлбар:
1. Стек дүүрэн эсэхийг шалгана.
   A. Хэрвээ стек дүүрэн бол Stack duuren
   мэдээллийг хэвлээд, стект элемэнт нэмж
   чадаагүй буюу false утга буцаана.
   B. Хэрвээ стек дүүрэн биш бол стекийн оройн
   утгыг нэгээр нэмэгдүүлэн, оройд элемэнтийг
   нэмээд, стект элемэнт нэмж чадсан буюу true
   утга буцаана.




Багш: В.Нямсүрэн
Стект элемэнт нэмэх

   MaxSize           10
   stItems

         top       2+1=3
                   2       0   A
                           1   Z
                           2   K
    St.push(‘E’);          3   E
                           4
                           5
                           6
                           7
                           8
                           9



Багш: В.Нямсүрэн
Стекээс элемэнтийг авах
  bool Stack::pop(Type &item){
      if(isempty()){
           cout<<"Stack hooson"<<endl;
           return false;
      }
      else{
           item=stItems[top--];
           return true;
      }
  }



Багш: В.Нямсүрэн
Стекээс элемэнтийг авах
Тайлбар:
1. Стек хоосон эсэхийг шалгана.
   A. Хэрвээ стек дүүрэн бол Stack hooson
   мэдээллийг хэвлээд, стекээс элемэнт устгаж
   чадаагүй буюу false утга буцаана.
   B. Хэрвээ стек хоосон биш бол стекийн оройн
   элемэнтийг    аван,   оройн    утгыг  нэгээр
   хоргодуулаад, стекийн оройн элемэнтийг авч
   чадсан буюу true утга буцаана.

    Оройн элемэнтийг авахдаа санах ойн үүрний
    хаягаар авна.

Багш: В.Нямсүрэн
Стекээс элемэнтийг авах

   MaxSize           10
   stItems

         top       3-1=2
                   3       0   A
                           1   Z
                           2   K
    St.pop(ch);            3   E
                           4
     Оройн                 5
     элемэнтийг аван,      6
     ch    хувьсагчийн     7
     утга E болно.         8
                           9



Багш: В.Нямсүрэн
Стекийн элемэнтүүдийг харах
  void Stack::view(){
  for(int i=0; i<=Top; i++)
      cout<<stItems[i];
  }




Багш: В.Нямсүрэн
Стекээс элемэнтийг авах

   MaxSize         10
   stItems

         top       3      0   A
                          1   Z
                          2   K
    St.view();            3   E
                          4
                          5
                          6
                          7
                          8
                          9



Багш: В.Нямсүрэн
Cтекийн хэрэглээ
    Илэрхийллийн хаалтны баланс шалгах
                   алгоритм
Алгоритмын      зорилго    нь:  тэмдэгтүүдийн
дараалалд (),{},[] гэсэн хаалтууд оролцох
бөгөөд нээх (,{,[ бүрт харгалзан хаах хаалт
),},] байгаа эсэхийг шалгах юм.




Багш: В.Нямсүрэн
Cтекийн хэрэглээ

 Баланслагдсан буюу зөв хаагдсан
 хаалтуудын цуваа
  •()
  •{}{}
  •({[]()}[])

 Баланслаагүй буюу буруу хаагдсан
 хаалтуудын цуваа
  •)
  •[
  •{[}]

Багш: В.Нямсүрэн
Cтекийн хэрэглээ
 Энэ асуудлыг үийдэ хамгийн хялбар ухаалаг зам
  нь стек ашиглах юм.

 Алгоритмын хэрэгжүүлэлт нь: Тэмдэгтүүдийн
  цувааны эхлэлээс тэмдэгт бүрийг уншин, нээх
  хаалт таарах бүрт түүнийг стект хийх ба хаах
  хаалт тааралдвал стекээс нэг элемэнт авч
  харгалзах нээх хаалт мөн эсэхийг шалган, зөв
  тохиолдолд цааш үргэлжлүүлэн шалгана.




Багш: В.Нямсүрэн
Cтекийн хэрэглээ
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
Typedef char Type;
enum bool {false,true};
class Stack{. . .};
char match(char cp){
  switch(cp){
    case')':return'(';
    case'}':return'{';
    case']':return'[';
  }
}
Багш: В.Нямсүрэн
Cтекийн хэрэглээ
void main(){
Stack st(100);
char s[80],ch;
int i=0;
cout<<"ilerhiilelee oruul;"; cin>>s;
while (s[i]){
  if (strchr("{[(",s[i])) st.push(s[i]);
  if (strchr("}])", s[i])){
  if((!st.pop(ch))||(ch=!match(s[i]))){
    cout<<"balancelaagui"<<endl;
    exit(-1);
  }
}
i++;
}
Багш: В.Нямсүрэн
Cтекийн хэрэглээ
if (st.isempty())
cout<<"balancelasan"<<endl;
else cout<<"balancelaagui"<<endl;
}




Багш: В.Нямсүрэн

More Related Content

Viewers also liked

Dsi lec5
Dsi lec5Dsi lec5
Dsi lec5ggmo86
 
Dsi lec14
Dsi lec14Dsi lec14
Dsi lec14ggmo86
 
Dsi lec1
Dsi lec1Dsi lec1
Dsi lec1ggmo86
 
Dsi lec3
Dsi lec3Dsi lec3
Dsi lec3ggmo86
 
Dsi lec2
Dsi lec2Dsi lec2
Dsi lec2ggmo86
 
Dsi lec4
Dsi lec4Dsi lec4
Dsi lec4ggmo86
 
Лекц 5
Лекц 5Лекц 5
Лекц 5Muuluu
 
Datastructure algoritm
Datastructure algoritmDatastructure algoritm
Datastructure algoritm
Nergui Batjargal
 
GNSS гэж юу вэ?
GNSS гэж юу вэ?GNSS гэж юу вэ?
GNSS гэж юу вэ?
Сумъяа Алтангэрэл
 
Sodko111
Sodko111Sodko111
Sodko111sodko27
 
Lec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsLec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsTuruu Tsogt
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
Muuluu
 
Xml өгөгдлийн бүтэц
Xml өгөгдлийн бүтэцXml өгөгдлийн бүтэц
Xml өгөгдлийн бүтэцgvndee
 
Процессорын архитектур
Процессорын архитектурПроцессорын архитектур
Процессорын архитектур
Muuluu
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
Muuluu
 
User account policy
User account policyUser account policy
User account policyMuuluu
 
Лекц 1
Лекц 1Лекц 1
Лекц 1Muuluu
 
Лекц 2
Лекц 2Лекц 2
Лекц 2Muuluu
 
Lecture 3
Lecture 3Lecture 3
Lecture 3
Muuluu
 

Viewers also liked (20)

Dsi lec5
Dsi lec5Dsi lec5
Dsi lec5
 
Dsi lec14
Dsi lec14Dsi lec14
Dsi lec14
 
Dsi lec1
Dsi lec1Dsi lec1
Dsi lec1
 
Dsi lec3
Dsi lec3Dsi lec3
Dsi lec3
 
Dsi lec2
Dsi lec2Dsi lec2
Dsi lec2
 
Dsi lec4
Dsi lec4Dsi lec4
Dsi lec4
 
Лекц 5
Лекц 5Лекц 5
Лекц 5
 
Datastructure algoritm
Datastructure algoritmDatastructure algoritm
Datastructure algoritm
 
GNSS гэж юу вэ?
GNSS гэж юу вэ?GNSS гэж юу вэ?
GNSS гэж юу вэ?
 
Blog ds-tod
Blog ds-todBlog ds-tod
Blog ds-tod
 
Sodko111
Sodko111Sodko111
Sodko111
 
Lec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsLec4 хereglegchiinpunkts
Lec4 хereglegchiinpunkts
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
Xml өгөгдлийн бүтэц
Xml өгөгдлийн бүтэцXml өгөгдлийн бүтэц
Xml өгөгдлийн бүтэц
 
Процессорын архитектур
Процессорын архитектурПроцессорын архитектур
Процессорын архитектур
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
 
User account policy
User account policyUser account policy
User account policy
 
Лекц 1
Лекц 1Лекц 1
Лекц 1
 
Лекц 2
Лекц 2Лекц 2
Лекц 2
 
Lecture 3
Lecture 3Lecture 3
Lecture 3
 

Dsi lec10

  • 1. Стек, түүнийг массив ашиглан зохион байгуулах Лекц №10 LOGO
  • 3. Стек /Stack/  Жагсаалтын бүтцүүдийн хувьд элемэнтийг нэмэх, устгах гэх мэтийн элемэнтэд хандах үйлдэл нь дурын байрлалд гүйцэтгэгдэж байсан.  Тэгвэл зарим өгөгдлийн бүтцийн хувьд элемэнтэд хандах үйлдэл нь хязгаарлагдмал байдаг.  Ийм хязгаарлагдмал хандалт бүхий өгөгдлийн бүтцийн нэг бол стек юм. Багш: В.Нямсүрэн
  • 4. Стек  Элемэнтийг устгах ба нэмэх үйлдэл нь орой гэж нэрлэгдэх нэг талаасаа хийгддэг шугаман тогтцыг стек гэнэ.  Үүнийг LIFO төрөл гэж ч нэрлэдэг. Энэ нь Last In First Out буюу сүүлд орсон нь эхэлж гарна гэсэн үг юм.  Хэдийгээр стек нь маш хязгаарлагдмал үйлдэлтэй боловч компьютерийн програмчлалд чухал үүрэгтэй өгөгдлийн бүтцүүдийн нэг юм. Багш: В.Нямсүрэн
  • 5. Амьдрал дээрх стекийн жишээ: Хоолны Гутлын тавиуруудын хайрцагнуудын стек стек Зооснуудын Цэвэрхэн стек эвхсэн цамцнуудын стек Багш: В.Нямсүрэн
  • 6. Стекийг нэвтрүүлэх аргууд Стекийг програмд олон ялгаатай аргаар нэвтрүүлж боловч ихэвчлэн • Шугаман массив • Нэг холбоост ашигладаг.  Шугаман массив ашиглан нэвтрүүлсэн стек нь компляцийн үед статикаар тодорхойлогдох өгөөд статик стекийн нийт хэмжээ нь тогтмол байдаг  Нэг ашиглан нэвтрүүлсэн стек нь програм ажиллах явцад динамикаар тодорхойлогдох бөгөөд динамик стекийн хэмжээ нь өөрчлөгдөж байдаг. Багш: В.Нямсүрэн
  • 7. Стекийн массиваар илэрхийлэх хийсвэрлэлт өгөгдөл: Стекийн • Стекийн өгөгдөл / *stack / • Стекийн хэмжээ / MaxSize / • Cтекийн орой / top / • Стект элемэнт нэмэх /push/ Стекийн үйлдэл: • Стекээс элемэнтийг авах /pop/ • Стек хоосон эсэхийг шалгах /isempty/ • Стек дүүрсэн эсэхийг шалгах /isfull/ • Стекийг элемэнтүүдийг харах /view/ Багш: В.Нямсүрэн
  • 8. Стекийг массиваар илэрхийлэх хийсвэрлэлт Массив Оройн индекс Стекийн орой Стек Багш: В.Нямсүрэн
  • 9. Cтекийг массиваар илэрхийлэх хийсвэр төрлийг тодорхойлох class Stack{ int top,MaxSize; Type*stItems; public: Stack(int Msize); ~Stack(); bool push(Type item); bool pop(Type &item); bool isempty(); bool isfull(); void view(); }; Багш: В.Нямсүрэн
  • 10. Cтекийг үүсгэх байгуулагч функц: Stack::Stack(int Msize){ MaxSize=Msize; stItems=new Type[MaxSize]; top=-1; } Тайлбар: Stack st(10); 10 хэмжээтэй st гэсэн нэртэй стекийг үүсгэж байна. Багш: В.Нямсүрэн
  • 11. Cтекийг үүсгэх байгуулагч функц: MaxSize 10 stItems top -1 0 1 2 3 4 5 6 7 8 9 Багш: В.Нямсүрэн
  • 12. Стекийг санах ойгоос чөлөөлөх устгагч функц: Stack::~Stack(){ delete[] stItems; } Багш: В.Нямсүрэн
  • 13. Стекийг санах ойгоос чөлөөлөх устгагч функц: MaxSize 10 stItems top -1 0 1 2 3 4 5 6 7 8 9 Багш: В.Нямсүрэн
  • 14. Стекийг хоосон эсэхийг шалгах bool Stack::isempty(){ if(top<0) return true; else return false; } Багш: В.Нямсүрэн
  • 15. Стекийг хоосон эсэхийг шалгах MaxSize 10 stItems top -1 0 1 2 3 Top хувьсагч 4 5 буюу оройн утга 6 0-ээс бага тул 7 стек хоосон 8 буюу true утга 9 буцаана. Багш: В.Нямсүрэн
  • 16. Стекийг хоосон эсэхийг шалгах MaxSize 10 stItems top 2 0 A 1 Z 2 K 3 Top хувьсагч 4 5 буюу оройн утга 6 0-ээс их тул стек 7 хоосон биш буюу 8 false утга 9 буцаана. Багш: В.Нямсүрэн
  • 17. Стекийг дүүрэн эсэхийг шалгах bool Stack::isfull(){ if(top>=MaxSize-1) return true; else return false; } Багш: В.Нямсүрэн
  • 18. Стекийг дүүрэн эсэхийг шалгах MaxSize 10 stItems top 2 0 A 1 Z 2 K Top хувьсагч 3 буюу оройн утга 4 MaxSize-1-ээс 5 бага тул стек 6 дүүрэн биш буюу 7 8 false утга 9 буцаана. Багш: В.Нямсүрэн
  • 19. Стекийг дүүрэн эсэхийг шалгах MaxSize 10 stItems top 9 0 A 1 Z 2 K Top хувьсагч 3 C буюу оройн утга 4 H MaxSize-1-тэй 5 L тэнцүү тул стек 6 Y O дүүрэн буюу 7 8 N true утга 9 W буцаана. Багш: В.Нямсүрэн
  • 20. Стект элемэнт нэмэх bool Stack::push(Type item){ if(isfull()){ cout<<"Stack duuren"<<endl; return false; } else{ stItems[++top]=item; return true; } } Багш: В.Нямсүрэн
  • 21. Стект элемэнт нэмэх Тайлбар: 1. Стек дүүрэн эсэхийг шалгана. A. Хэрвээ стек дүүрэн бол Stack duuren мэдээллийг хэвлээд, стект элемэнт нэмж чадаагүй буюу false утга буцаана. B. Хэрвээ стек дүүрэн биш бол стекийн оройн утгыг нэгээр нэмэгдүүлэн, оройд элемэнтийг нэмээд, стект элемэнт нэмж чадсан буюу true утга буцаана. Багш: В.Нямсүрэн
  • 22. Стект элемэнт нэмэх MaxSize 10 stItems top 2+1=3 2 0 A 1 Z 2 K St.push(‘E’); 3 E 4 5 6 7 8 9 Багш: В.Нямсүрэн
  • 23. Стекээс элемэнтийг авах bool Stack::pop(Type &item){ if(isempty()){ cout<<"Stack hooson"<<endl; return false; } else{ item=stItems[top--]; return true; } } Багш: В.Нямсүрэн
  • 24. Стекээс элемэнтийг авах Тайлбар: 1. Стек хоосон эсэхийг шалгана. A. Хэрвээ стек дүүрэн бол Stack hooson мэдээллийг хэвлээд, стекээс элемэнт устгаж чадаагүй буюу false утга буцаана. B. Хэрвээ стек хоосон биш бол стекийн оройн элемэнтийг аван, оройн утгыг нэгээр хоргодуулаад, стекийн оройн элемэнтийг авч чадсан буюу true утга буцаана. Оройн элемэнтийг авахдаа санах ойн үүрний хаягаар авна. Багш: В.Нямсүрэн
  • 25. Стекээс элемэнтийг авах MaxSize 10 stItems top 3-1=2 3 0 A 1 Z 2 K St.pop(ch); 3 E 4 Оройн 5 элемэнтийг аван, 6 ch хувьсагчийн 7 утга E болно. 8 9 Багш: В.Нямсүрэн
  • 26. Стекийн элемэнтүүдийг харах void Stack::view(){ for(int i=0; i<=Top; i++) cout<<stItems[i]; } Багш: В.Нямсүрэн
  • 27. Стекээс элемэнтийг авах MaxSize 10 stItems top 3 0 A 1 Z 2 K St.view(); 3 E 4 5 6 7 8 9 Багш: В.Нямсүрэн
  • 28. Cтекийн хэрэглээ Илэрхийллийн хаалтны баланс шалгах алгоритм Алгоритмын зорилго нь: тэмдэгтүүдийн дараалалд (),{},[] гэсэн хаалтууд оролцох бөгөөд нээх (,{,[ бүрт харгалзан хаах хаалт ),},] байгаа эсэхийг шалгах юм. Багш: В.Нямсүрэн
  • 29. Cтекийн хэрэглээ Баланслагдсан буюу зөв хаагдсан хаалтуудын цуваа •() •{}{} •({[]()}[]) Баланслаагүй буюу буруу хаагдсан хаалтуудын цуваа •) •[ •{[}] Багш: В.Нямсүрэн
  • 30. Cтекийн хэрэглээ  Энэ асуудлыг үийдэ хамгийн хялбар ухаалаг зам нь стек ашиглах юм.  Алгоритмын хэрэгжүүлэлт нь: Тэмдэгтүүдийн цувааны эхлэлээс тэмдэгт бүрийг уншин, нээх хаалт таарах бүрт түүнийг стект хийх ба хаах хаалт тааралдвал стекээс нэг элемэнт авч харгалзах нээх хаалт мөн эсэхийг шалган, зөв тохиолдолд цааш үргэлжлүүлэн шалгана. Багш: В.Нямсүрэн
  • 31. Cтекийн хэрэглээ #include<iostream.h> #include<string.h> #include<stdlib.h> #include<stdio.h> Typedef char Type; enum bool {false,true}; class Stack{. . .}; char match(char cp){ switch(cp){ case')':return'('; case'}':return'{'; case']':return'['; } } Багш: В.Нямсүрэн
  • 32. Cтекийн хэрэглээ void main(){ Stack st(100); char s[80],ch; int i=0; cout<<"ilerhiilelee oruul;"; cin>>s; while (s[i]){ if (strchr("{[(",s[i])) st.push(s[i]); if (strchr("}])", s[i])){ if((!st.pop(ch))||(ch=!match(s[i]))){ cout<<"balancelaagui"<<endl; exit(-1); } } i++; } Багш: В.Нямсүрэн
  • 33. Cтекийн хэрэглээ if (st.isempty()) cout<<"balancelasan"<<endl; else cout<<"balancelaagui"<<endl; } Багш: В.Нямсүрэн