SlideShare a Scribd company logo
LOGO
Лекц № 13
Дарааллыг нэг холбоост
жагсаалт ашиглан нэвтрүүлэх
Хичээлийн агуулга
Дарааллыг динамикаар
тодорхойлох шаардлага
 Дарааллыг массив ашиглан нэвтрүүлэх үед
массивын хэмжээгээр дараалалд хадгалагдах
элемэнтийн тоо хязгаарлагдаж байсан.
 Мөн дарааллын дүүрсэн болон хоосон байх
төлвийг тодорхойлоход нилээд төвөгтэй байсан.
Дарааллыг динамикаар
тодорхойлох шаардлага
 Тэгвэл дарааллыг нэвтрүүлэх бас нэг арга нь нэг
холбоост жагсаалт ашиглах явдал юм.
 Дарааллын зарчим ёсоор дарааллын эхлэл,
төгсгөлийн хоёр элемэнтээс бусад элемэнтэд
хандах шаардлагагүй байдаг.
 Тиймээс нэг холбоост жагсаалтын эхлэл
төгсгөлийн элемэнтийг заах заагчийн
тусламжтайгаар дараалалд хийх үйлдлүүдийг
гүйцэтгэх боломжтой.
Дарааллыг нэг холбоост
жагсаалтаар илэрхийлэх
 Дарааллыг нэг холбоост жагсаалтаар илэрхийлж
байгаа тул
 Элемэнт буюу зангилаа нь өгөгдөл ба
холбоос гэсэн хоёр хэсгээс тогтоно.
 Хийгдэх үйлдлүүд нь дараалалд
зөвшөөрөгдсөн үйлдлүүд байна. Харин
дарааллыг динамикаар тодорхойлж байгаа
тул дүүрсэн эсэхийг шалгах үйлдэл
тодорхойлохгүй.
Давхар төгсгөлт дараалал
/Double Ended Queue/
 Элемэнт нэмэх ба устгах үйлдлийг аль ч
төгсгөлд нь гүйцэтгэж болох дарааллыг давхар
төгсгөлт дараалал гэнэ.
 Давхар төгсгөлт дараалал нь нэг талаас эсрэг
чиглэлтэй хоёр дарааллын нэгдэл, нөгөө талаас
хоёр стекийн нэгдэл юм.
 Давхар төгсгөлт дарааллыг хоёр холбоост
жагсаалт ашиглан нэвтрүүлэх нь зохимжтой.
Давхар төгсгөлт дараалал
 Давхар төгсгөлт дарааллын тухайн нэг төгсгөлд
орсон элемэнт тэр төгсгөлөөрөө гарвал стекийн
зарчмаар, харин нөгөө төгсгөлөөрөө гарвал
дарааллын зарчмаар ажиллах болно
Давхар төгсгөлт дараалал
 Мөн элемэнт нэмэх үйлдлийг нэг төгсгөлд,
элемэнт устгах үйлдлийг хоёр төгсгөлд нь хийх
боломжтой давхар төгсгөлт дарааллыг оролт нь
хязгаарлагдмал давхар төгсгөлт дараалал
гэнэ.
 Харин элемэнт нэмэх үйлдлийг хоёр төгсгөлд,
элемэнт устгах үйлдлийг нэг төгсгөлд нь хийх
боломжтой давхар төгсгөлт дарааллыг гаралт
нь хязгаарлагдмал давхар төгсгөлт дараалал
гэнэ.
Эрэмбэт дараалал
/Priority Queue/
 Хамгийн өндөр эрэмбэтэй элемэнтийг эхэлж
гаргах дарааллыг эрэмбэт дараалал гэнэ.
 Өөрөөр хэлбэл эрэмбэт дараалал нь дараах
үйлдлүүдээр тодорхойлогдоно.
 Элемэнт оруулах
 Хамгийн өндөр эрэмбэтэй элемэнтийг гаргах
 Хэрэв дараалалд ижил эрэмбэтэй элемэнтүүд
байвал тэдгээрийн эхэлж орсон нь эхэлж гарах
зарчмаар ажиллана
Эрэмбэт дарааллын амьдралын жишээ:
Эрэмбэт дараалал
 Эрэмбэт дараалллыг дараах аргуудаар
хэрэгжүүлж болно.
1. Эрэмбэт дарааллын элемэнтүүдийг орсон
дарааллаар хадгалан, харин дарааллын
хамгийн их буюу өндөр эрэмбэтэй элемэнтийг
хайж олон, түүнийг дарааллаас гаргана
2. Дараалалд элемэнт оруулахдаа дарааллын
төгсгөлөөс элемэнтүүдийн эрэмбэтэй
харьцуулан зохих байрлалд оруулна. Тиймээс
дарааллын элемэтүүд нь эрэмбэлэгдсэн байх
байх ба хамгийн өндөр эрэмбэтэй элемэнт нь
ямагт дарааллын эхэнд байрлах ба элемэнтийг
гаргахдаа шууд дарааллын эхнээс гаргана.
Эрэмбэт дараалалын
зангилааг илэрхийлэх
class PQNode{
int element;
PQNode*link;
PQNode(int evalue, QNode*lvalue=NULL)
{
element=evalue;
link=lvalue;
}
friend class PriorityQueue;
};
Эрэмбэт дарааллыг
зохион байгуулах
 Дараалалд дараах гадаад заагчуудыг тодорхойлж,
ашиглах шаардлагатай
1. Эхлэлийн заагч.
2. Төгсгөлийн заагч.
Эрэмбэт дараалалд
хийгдэх үйлдлүүд
Эрэмбэт дараалад элемэнт нэмэх– Insert()
Эрэмбэт дарааллаас өндөр эрэмбэтэй/хамгийн
их/ элемэнтийг олох– Maximum()
Эрэмбэт дарааллаас өндөр эрэмбэтэй/хамгийн
бага/ элемэнтийг олох– Minimum()
Эрэмбэт дарааллаас өндөр эрэмбэтэй элемэнтийг
устгах– Delete()
Эрэмбэт дарааллаас элемэнт хайх – Search()
Эрэмбэт дараалал хоосон эсэхийг шалгах–
IsEmpty()
Эрэмбэт дарааллын элемэнтүүдийг хэвлэх–
SizeOfStack()
Эрэмбэт дарааллыг нэг холбоост
жагсаалт ашиглан зохион байгуулах
class PriorityQueue{
PQNode *front;
PQNode *rear;
public:
PriorityQueue();
~PriorityQueue();
int Maximum();
int Minimum();
void Insert(int);
bool Delete(int);
void Display();
int Search (int);
bool IsEmpty();
};
ЭД-ыг үүсгэх
байгуулагч функц
PriorityQueue::PriorityQueue()
{
front=rear=NULL;
}
Тайлбар:
PriorityQueue PQ;
// PQ нэртэй эрэмбэт дараалал үүсгэж байна.
front rear
ЭД-ыг санах ойгоос
чөлөөлөх устгагч функц
PriorityQueue::~PriorityQueue()
{
while (front != NULL)
{
PQNode* curr = front;
front = front->link;
delete curr;
}
rear = NULL;
}
ЭД-ыг санах ойгоос
чөлөөлөх устгагч функц
100 56 34
currfront rear
456
ЭД-ыг санах ойгоос
чөлөөлөх устгагч функц
56 34
currfront rear
456
ЭД-ыг санах ойгоос
чөлөөлөх устгагч функц
currfrontrear
456
ЭД-ыг санах ойгоос
чөлөөлөх устгагч функц
curr frontrear
ЭД-д элемэнт
нэмэх функц
void PriorityQueue::Insert(int InsertItem)
{
PQNode*curr=new PQNode(InsertItem,NULL);
if(IsEmpty())
front=curr;
else
rear->link=curr;
rear=curr;
}
ЭД-д элемэнт нэмэх
currfront rear
100
100 56 34
front rear
456
curr
ЭД-аас өндөр эрэмбэтэй/хамгийн их/
элемэнтийг олох функц:
int PriorityQueue::Maximum(){
int Temp;
PQNode*curr=front;
Temp=curr->element;
while(curr->link!=NULL) {
if(curr->element>Temp)
Temp=curr->element;
curr=curr->link;
}
if(curr->link==NULL && curr->element>Temp)
Temp=curr->element;
return Temp;
}
ЭД-аас өндөр эрэмбэтэй/хамгийн их/
элемэнтийг олох функц:
100 56 34
front rear
456
curr
Temp
1000
ЭД-аас өндөр эрэмбэтэй/хамгийн их/
элемэнтийг олох функц:
100 56 34
front rear
456
curr
Temp
1000
ЭД-аас өндөр эрэмбэтэй/хамгийн их/
элемэнтийг олох функц:
100 56 34
front rear
456
curr
Temp
10004560
ЭД-аас өндөр эрэмбэтэй/хамгийн их/
элемэнтийг олох функц:
100 56 34
front rear
456
curr
Temp
10004560
ЭД-аас өндөр эрэмбэтэй/хамгийн
бага/ элемэнтийг олох функц:
int PriorityQueue::Minimum(){
int Temp;
PQNode*curr=front;
Temp=curr->element;
while(curr->link!=NULL){
if(curr->element<Temp)
Temp=curr->element;
curr=curr->link;
}
if(curr->link==NULL && curr->element<Temp)
Temp=curr->element;
return Temp;
}
ЭД-аас өндөр эрэмбэтэй/хамгийн
бага/ элемэнтийг олох
100 56 34
front rear
456
curr
Temp
1000
ЭД-аас өндөр эрэмбэтэй/хамгийн
бага/ элемэнтийг олох
100 56 34
front rear
456
curr
Temp
1000560
ЭД-аас өндөр эрэмбэтэй/хамгийн
бага/ элемэнтийг олох
100 56 34
front rear
456
curr
Temp
560
ЭД-аас өндөр эрэмбэтэй/хамгийн
бага/ элемэнтийг олох
100 56 34
front rear
456
curr
Temp
560340
ЭД-аас элемэнт устгах функц:
bool PriorityQueue::Delete(int DeleteItem){
if(IsEmpty()){
cout<<"Queue is Empty"<<endl;
return false;
}
else{
PQNode* curr = front;
PQNode* prevCurr = NULL;
while (curr!=NULL &&
curr->element!= DeleteItem){
prevCurr = curr;
curr = curr->link;
}
ЭД-аас элемэнт устгах функц:
if (curr == NULL)
cout<<"item not found";
if (curr == front)
front = curr->link;
else
prevCurr->link = curr->link;
if (curr == rear)
rear = prevCurr;
delete curr;
return true;
}
}

More Related Content

What's hot

Dsi lec5,6
Dsi lec5,6Dsi lec5,6
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргуудBayalagmaa Davaanyam
 
Өгөгдлийн бүтэц 10
Өгөгдлийн бүтэц 10Өгөгдлийн бүтэц 10
Өгөгдлийн бүтэц 10
International Ulaanbaatar University
 
Lecture3 охп удамшил
Lecture3 охп удамшилLecture3 охп удамшил
Lecture3 охп удамшил
Mijiddorj Renchin-Ochir
 
C cons
C consC cons
C cons
Onon Tuul
 
Ms access
Ms accessMs access
Ms access
Ziyakhan Raimbek
 
Lekts presentation2
Lekts presentation2Lekts presentation2
Lekts presentation2ganzorigb
 
тооллын систем
тооллын системтооллын систем
тооллын системMunkhuu Buyanaa
 
Ogogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lektsOgogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lektsАлдарболд Э.
 

What's hot (20)

Dsi lec5,6
Dsi lec5,6Dsi lec5,6
Dsi lec5,6
 
Database 3
Database 3Database 3
Database 3
 
database 7-8
database 7-8database 7-8
database 7-8
 
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд
 
Өгөгдлийн бүтэц 10
Өгөгдлийн бүтэц 10Өгөгдлийн бүтэц 10
Өгөгдлийн бүтэц 10
 
Lec5 angi
Lec5 angiLec5 angi
Lec5 angi
 
Лекц №10
Лекц №10Лекц №10
Лекц №10
 
7 8
7 87 8
7 8
 
Lecture3 охп удамшил
Lecture3 охп удамшилLecture3 охп удамшил
Lecture3 охп удамшил
 
C cons
C consC cons
C cons
 
Ms access
Ms accessMs access
Ms access
 
Лекц 6 - 7
Лекц 6 - 7Лекц 6 - 7
Лекц 6 - 7
 
Ood lesson9 activity
Ood lesson9 activityOod lesson9 activity
Ood lesson9 activity
 
It101 lects 2
It101 lects 2It101 lects 2
It101 lects 2
 
Lekts presentation2
Lekts presentation2Lekts presentation2
Lekts presentation2
 
Лекц 9(Заагч)
Лекц 9(Заагч)Лекц 9(Заагч)
Лекц 9(Заагч)
 
тооллын систем
тооллын системтооллын систем
тооллын систем
 
Database 6
Database 6Database 6
Database 6
 
database 9
database 9database 9
database 9
 
Ogogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lektsOgogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lekts
 

Similar to Өгөгдлийн бүтэц 13

Dsi lec13
Dsi lec13Dsi lec13
Dsi lec13ggmo86
 
Dsi lec6,7
Dsi lec6,7Dsi lec6,7
Dsi lec6,7ggmo86
 
Dsi lec7
Dsi lec7Dsi lec7
Өгөгдлийн бүтэц 11
Өгөгдлийн бүтэц 11Өгөгдлийн бүтэц 11
Өгөгдлийн бүтэц 11
International Ulaanbaatar University
 
Dsi lec9-copy
Dsi lec9-copyDsi lec9-copy
Dsi lec9-copyggmo86
 
Dsi lec12
Dsi lec12Dsi lec12
Dsi lec12ggmo86
 

Similar to Өгөгдлийн бүтэц 13 (7)

Dsi lec13
Dsi lec13Dsi lec13
Dsi lec13
 
Dsi lec6,7
Dsi lec6,7Dsi lec6,7
Dsi lec6,7
 
Dsi lec7
Dsi lec7Dsi lec7
Dsi lec7
 
Өгөгдлийн бүтэц 11
Өгөгдлийн бүтэц 11Өгөгдлийн бүтэц 11
Өгөгдлийн бүтэц 11
 
Dsi lec9-copy
Dsi lec9-copyDsi lec9-copy
Dsi lec9-copy
 
Лекц №15
Лекц №15Лекц №15
Лекц №15
 
Dsi lec12
Dsi lec12Dsi lec12
Dsi lec12
 

More from International Ulaanbaatar University

Визуаль програмчлал бие даалт
Визуаль програмчлал бие даалтВизуаль програмчлал бие даалт
Визуаль програмчлал бие даалт
International Ulaanbaatar University
 
ОХШЗ - Бие Даалт
ОХШЗ - Бие ДаалтОХШЗ - Бие Даалт
ОХШЗ - Бие Даалт
International Ulaanbaatar University
 
Lec13
Lec13Lec13

More from International Ulaanbaatar University (20)

Lec8
Lec8 Lec8
Lec8
 
Lec7
Lec7 Lec7
Lec7
 
Lec5 6
Lec5 6 Lec5 6
Lec5 6
 
Lec4
Lec4 Lec4
Lec4
 
Lec3
Lec3 Lec3
Lec3
 
Lec2
Lec2 Lec2
Lec2
 
Lec1
Lec1 Lec1
Lec1
 
Визуаль програмчлал бие даалт
Визуаль програмчлал бие даалтВизуаль програмчлал бие даалт
Визуаль програмчлал бие даалт
 
ОХШЗ - Бие Даалт
ОХШЗ - Бие ДаалтОХШЗ - Бие Даалт
ОХШЗ - Бие Даалт
 
Ood lesson12.1 ---------
Ood lesson12.1  ---------Ood lesson12.1  ---------
Ood lesson12.1 ---------
 
Ood lesson11 sequence
Ood lesson11 sequenceOod lesson11 sequence
Ood lesson11 sequence
 
Ood lesson10 statechart
Ood lesson10 statechartOod lesson10 statechart
Ood lesson10 statechart
 
Ood lesson7,8 class
Ood lesson7,8 classOod lesson7,8 class
Ood lesson7,8 class
 
Ood lesson6 class
Ood lesson6 classOod lesson6 class
Ood lesson6 class
 
Ood lesson5
Ood lesson5Ood lesson5
Ood lesson5
 
Ood lesson4
Ood lesson4Ood lesson4
Ood lesson4
 
Ood lesson3
Ood lesson3Ood lesson3
Ood lesson3
 
Ood lesson2
Ood lesson2Ood lesson2
Ood lesson2
 
Ood lesson1
Ood lesson1Ood lesson1
Ood lesson1
 
Lec13
Lec13Lec13
Lec13
 

Өгөгдлийн бүтэц 13

  • 1. LOGO Лекц № 13 Дарааллыг нэг холбоост жагсаалт ашиглан нэвтрүүлэх
  • 3. Дарааллыг динамикаар тодорхойлох шаардлага  Дарааллыг массив ашиглан нэвтрүүлэх үед массивын хэмжээгээр дараалалд хадгалагдах элемэнтийн тоо хязгаарлагдаж байсан.  Мөн дарааллын дүүрсэн болон хоосон байх төлвийг тодорхойлоход нилээд төвөгтэй байсан.
  • 4. Дарааллыг динамикаар тодорхойлох шаардлага  Тэгвэл дарааллыг нэвтрүүлэх бас нэг арга нь нэг холбоост жагсаалт ашиглах явдал юм.  Дарааллын зарчим ёсоор дарааллын эхлэл, төгсгөлийн хоёр элемэнтээс бусад элемэнтэд хандах шаардлагагүй байдаг.  Тиймээс нэг холбоост жагсаалтын эхлэл төгсгөлийн элемэнтийг заах заагчийн тусламжтайгаар дараалалд хийх үйлдлүүдийг гүйцэтгэх боломжтой.
  • 5. Дарааллыг нэг холбоост жагсаалтаар илэрхийлэх  Дарааллыг нэг холбоост жагсаалтаар илэрхийлж байгаа тул  Элемэнт буюу зангилаа нь өгөгдөл ба холбоос гэсэн хоёр хэсгээс тогтоно.  Хийгдэх үйлдлүүд нь дараалалд зөвшөөрөгдсөн үйлдлүүд байна. Харин дарааллыг динамикаар тодорхойлж байгаа тул дүүрсэн эсэхийг шалгах үйлдэл тодорхойлохгүй.
  • 6. Давхар төгсгөлт дараалал /Double Ended Queue/  Элемэнт нэмэх ба устгах үйлдлийг аль ч төгсгөлд нь гүйцэтгэж болох дарааллыг давхар төгсгөлт дараалал гэнэ.  Давхар төгсгөлт дараалал нь нэг талаас эсрэг чиглэлтэй хоёр дарааллын нэгдэл, нөгөө талаас хоёр стекийн нэгдэл юм.  Давхар төгсгөлт дарааллыг хоёр холбоост жагсаалт ашиглан нэвтрүүлэх нь зохимжтой.
  • 7. Давхар төгсгөлт дараалал  Давхар төгсгөлт дарааллын тухайн нэг төгсгөлд орсон элемэнт тэр төгсгөлөөрөө гарвал стекийн зарчмаар, харин нөгөө төгсгөлөөрөө гарвал дарааллын зарчмаар ажиллах болно
  • 8. Давхар төгсгөлт дараалал  Мөн элемэнт нэмэх үйлдлийг нэг төгсгөлд, элемэнт устгах үйлдлийг хоёр төгсгөлд нь хийх боломжтой давхар төгсгөлт дарааллыг оролт нь хязгаарлагдмал давхар төгсгөлт дараалал гэнэ.  Харин элемэнт нэмэх үйлдлийг хоёр төгсгөлд, элемэнт устгах үйлдлийг нэг төгсгөлд нь хийх боломжтой давхар төгсгөлт дарааллыг гаралт нь хязгаарлагдмал давхар төгсгөлт дараалал гэнэ.
  • 9. Эрэмбэт дараалал /Priority Queue/  Хамгийн өндөр эрэмбэтэй элемэнтийг эхэлж гаргах дарааллыг эрэмбэт дараалал гэнэ.  Өөрөөр хэлбэл эрэмбэт дараалал нь дараах үйлдлүүдээр тодорхойлогдоно.  Элемэнт оруулах  Хамгийн өндөр эрэмбэтэй элемэнтийг гаргах  Хэрэв дараалалд ижил эрэмбэтэй элемэнтүүд байвал тэдгээрийн эхэлж орсон нь эхэлж гарах зарчмаар ажиллана
  • 11. Эрэмбэт дараалал  Эрэмбэт дараалллыг дараах аргуудаар хэрэгжүүлж болно. 1. Эрэмбэт дарааллын элемэнтүүдийг орсон дарааллаар хадгалан, харин дарааллын хамгийн их буюу өндөр эрэмбэтэй элемэнтийг хайж олон, түүнийг дарааллаас гаргана 2. Дараалалд элемэнт оруулахдаа дарааллын төгсгөлөөс элемэнтүүдийн эрэмбэтэй харьцуулан зохих байрлалд оруулна. Тиймээс дарааллын элемэтүүд нь эрэмбэлэгдсэн байх байх ба хамгийн өндөр эрэмбэтэй элемэнт нь ямагт дарааллын эхэнд байрлах ба элемэнтийг гаргахдаа шууд дарааллын эхнээс гаргана.
  • 12. Эрэмбэт дараалалын зангилааг илэрхийлэх class PQNode{ int element; PQNode*link; PQNode(int evalue, QNode*lvalue=NULL) { element=evalue; link=lvalue; } friend class PriorityQueue; };
  • 13. Эрэмбэт дарааллыг зохион байгуулах  Дараалалд дараах гадаад заагчуудыг тодорхойлж, ашиглах шаардлагатай 1. Эхлэлийн заагч. 2. Төгсгөлийн заагч.
  • 14. Эрэмбэт дараалалд хийгдэх үйлдлүүд Эрэмбэт дараалад элемэнт нэмэх– Insert() Эрэмбэт дарааллаас өндөр эрэмбэтэй/хамгийн их/ элемэнтийг олох– Maximum() Эрэмбэт дарааллаас өндөр эрэмбэтэй/хамгийн бага/ элемэнтийг олох– Minimum() Эрэмбэт дарааллаас өндөр эрэмбэтэй элемэнтийг устгах– Delete() Эрэмбэт дарааллаас элемэнт хайх – Search() Эрэмбэт дараалал хоосон эсэхийг шалгах– IsEmpty() Эрэмбэт дарааллын элемэнтүүдийг хэвлэх– SizeOfStack()
  • 15. Эрэмбэт дарааллыг нэг холбоост жагсаалт ашиглан зохион байгуулах class PriorityQueue{ PQNode *front; PQNode *rear; public: PriorityQueue(); ~PriorityQueue(); int Maximum(); int Minimum(); void Insert(int); bool Delete(int); void Display(); int Search (int); bool IsEmpty(); };
  • 16. ЭД-ыг үүсгэх байгуулагч функц PriorityQueue::PriorityQueue() { front=rear=NULL; } Тайлбар: PriorityQueue PQ; // PQ нэртэй эрэмбэт дараалал үүсгэж байна. front rear
  • 17. ЭД-ыг санах ойгоос чөлөөлөх устгагч функц PriorityQueue::~PriorityQueue() { while (front != NULL) { PQNode* curr = front; front = front->link; delete curr; } rear = NULL; }
  • 18. ЭД-ыг санах ойгоос чөлөөлөх устгагч функц 100 56 34 currfront rear 456
  • 19. ЭД-ыг санах ойгоос чөлөөлөх устгагч функц 56 34 currfront rear 456
  • 20. ЭД-ыг санах ойгоос чөлөөлөх устгагч функц currfrontrear 456
  • 21. ЭД-ыг санах ойгоос чөлөөлөх устгагч функц curr frontrear
  • 22. ЭД-д элемэнт нэмэх функц void PriorityQueue::Insert(int InsertItem) { PQNode*curr=new PQNode(InsertItem,NULL); if(IsEmpty()) front=curr; else rear->link=curr; rear=curr; }
  • 23. ЭД-д элемэнт нэмэх currfront rear 100 100 56 34 front rear 456 curr
  • 24. ЭД-аас өндөр эрэмбэтэй/хамгийн их/ элемэнтийг олох функц: int PriorityQueue::Maximum(){ int Temp; PQNode*curr=front; Temp=curr->element; while(curr->link!=NULL) { if(curr->element>Temp) Temp=curr->element; curr=curr->link; } if(curr->link==NULL && curr->element>Temp) Temp=curr->element; return Temp; }
  • 25. ЭД-аас өндөр эрэмбэтэй/хамгийн их/ элемэнтийг олох функц: 100 56 34 front rear 456 curr Temp 1000
  • 26. ЭД-аас өндөр эрэмбэтэй/хамгийн их/ элемэнтийг олох функц: 100 56 34 front rear 456 curr Temp 1000
  • 27. ЭД-аас өндөр эрэмбэтэй/хамгийн их/ элемэнтийг олох функц: 100 56 34 front rear 456 curr Temp 10004560
  • 28. ЭД-аас өндөр эрэмбэтэй/хамгийн их/ элемэнтийг олох функц: 100 56 34 front rear 456 curr Temp 10004560
  • 29. ЭД-аас өндөр эрэмбэтэй/хамгийн бага/ элемэнтийг олох функц: int PriorityQueue::Minimum(){ int Temp; PQNode*curr=front; Temp=curr->element; while(curr->link!=NULL){ if(curr->element<Temp) Temp=curr->element; curr=curr->link; } if(curr->link==NULL && curr->element<Temp) Temp=curr->element; return Temp; }
  • 30. ЭД-аас өндөр эрэмбэтэй/хамгийн бага/ элемэнтийг олох 100 56 34 front rear 456 curr Temp 1000
  • 31. ЭД-аас өндөр эрэмбэтэй/хамгийн бага/ элемэнтийг олох 100 56 34 front rear 456 curr Temp 1000560
  • 32. ЭД-аас өндөр эрэмбэтэй/хамгийн бага/ элемэнтийг олох 100 56 34 front rear 456 curr Temp 560
  • 33. ЭД-аас өндөр эрэмбэтэй/хамгийн бага/ элемэнтийг олох 100 56 34 front rear 456 curr Temp 560340
  • 34. ЭД-аас элемэнт устгах функц: bool PriorityQueue::Delete(int DeleteItem){ if(IsEmpty()){ cout<<"Queue is Empty"<<endl; return false; } else{ PQNode* curr = front; PQNode* prevCurr = NULL; while (curr!=NULL && curr->element!= DeleteItem){ prevCurr = curr; curr = curr->link; }
  • 35. ЭД-аас элемэнт устгах функц: if (curr == NULL) cout<<"item not found"; if (curr == front) front = curr->link; else prevCurr->link = curr->link; if (curr == rear) rear = prevCurr; delete curr; return true; } }