SlideShare a Scribd company logo
1 of 35
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
Dsi lec5Dsi lec5
Dsi lec5ggmo86
 
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргуудBayalagmaa Davaanyam
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10Badral Khurelbaatar
 
Day 1 database
Day 1   databaseDay 1   database
Day 1 databaseETC
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэцMuuluu
 
функц шинжлэх график байгуулах
функц шинжлэх график байгуулахфункц шинжлэх график байгуулах
функц шинжлэх график байгуулахKhishighuu Myanganbuu
 
Эрэмбэлэлт хайлтын аргууд
Эрэмбэлэлт хайлтын аргуудЭрэмбэлэлт хайлтын аргууд
Эрэмбэлэлт хайлтын аргуудBayalagmaa Davaanyam
 
мэдээллийн системийг хөгжүүлэх
мэдээллийн системийг хөгжүүлэхмэдээллийн системийг хөгжүүлэх
мэдээллийн системийг хөгжүүлэхKhishighuu Myanganbuu
 
Lecture 5
Lecture 5Lecture 5
Lecture 5Muuluu
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсБямбаа Авирмэд
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)Badral Khurelbaatar
 
логик 2
логик 2логик 2
логик 2doljoo79
 

What's hot (20)

Өгөгдлийн бүтэц 2-3
Өгөгдлийн бүтэц 2-3Өгөгдлийн бүтэц 2-3
Өгөгдлийн бүтэц 2-3
 
Dsi lec5
Dsi lec5Dsi lec5
Dsi lec5
 
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд
 
database 12
database 12database 12
database 12
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
 
Өгөгдлийн бүтэц 14
Өгөгдлийн бүтэц 14Өгөгдлийн бүтэц 14
Өгөгдлийн бүтэц 14
 
Өгөгдлийн бүтэц 15
Өгөгдлийн бүтэц 15Өгөгдлийн бүтэц 15
Өгөгдлийн бүтэц 15
 
Day 1 database
Day 1   databaseDay 1   database
Day 1 database
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
database 7-8
database 7-8database 7-8
database 7-8
 
функц шинжлэх график байгуулах
функц шинжлэх график байгуулахфункц шинжлэх график байгуулах
функц шинжлэх график байгуулах
 
Эрэмбэлэлт хайлтын аргууд
Эрэмбэлэлт хайлтын аргуудЭрэмбэлэлт хайлтын аргууд
Эрэмбэлэлт хайлтын аргууд
 
мэдээллийн системийг хөгжүүлэх
мэдээллийн системийг хөгжүүлэхмэдээллийн системийг хөгжүүлэх
мэдээллийн системийг хөгжүүлэх
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэс
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
 
Database 6
Database 6Database 6
Database 6
 
логик 2
логик 2логик 2
логик 2
 
database 10
database 10database 10
database 10
 
It101 lect9
It101 lect9It101 lect9
It101 lect9
 

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

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

Dsi lec5,6
Dsi lec5,6Dsi lec5,6
Dsi lec5,6
 
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
 
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 (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 lesson9 activity
Ood lesson9 activityOod lesson9 activity
Ood lesson9 activity
 
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
 

Өгөгдлийн бүтэц 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; } }