More Related Content
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
DOCX
тоон дараалл хязгаар лекц№1 DOCX
Viewers also liked
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
ODT
PPT
PPTX
DOCX
ODP
PPT
PPTX
хэрэглээний програмууд ба системийн програмууд PPTX
PPTX
PPTX
PDF
Similar to Dsi lec13
PPTX
PPTX
PPTX
PDF
u.cs101 "Алгоритм ба програмчлал" Лекц №5 PPTX
PDF
u.cs101 "Алгоритм ба програмчлал" Лекц №4 PDF
PDF
PDF
PDF
PDF
u.cs101 "Алгоритм ба програмчлал" Лекц №6 PPTX
U.cs101 алгоритм программчлал-14 PPTX
PPTX
PDF
PDF
PDF
DOCX
PPTX
PPTX
U.cs101 алгоритм программчлал-2 Recently uploaded
PDF
Суралцагч, төгсөгчийн мэдлэг, ур чадвар, чадамжийг үнэлж, баталгаажуулах журам PDF
Техникийн боловсролын сургалтын дипломын ажил хамгаалах, үнэлэх журам PPTX
Багш ямар хөтөлбөр ,төлөвлөлт боловсруулах бэ арга зүйн сургалт - Copy.pptx PDF
УПК-ын Дипломын ажил бичих аргачлал 2025 PDF
Мэдээлэл технологийн аюулгүй байдал хангах журам PDF
УПК-ийн Мэдээллийн төв ашиглах журам 2025 PDF
Дадлага ажил, төсөлт сургалтаар бүтээгдэхүүн үйлдвэрлэх, борлуулах, материалы... Dsi lec13
- 1.
- 2.
- 3.
Дарааллыг динамикаар
тодорхойлох шаардлага
Дарааллыг массив ашиглан нэвтрүүлэх үед
массивын хэмжээгээр дараалалд хадгалагдах
элемэнтийн тоо хязгаарлагдаж байсан.
Мөн дарааллын дүүрсэн болон хоосон байх
төлвийг тодорхойлоход нилээд төвөгтэй байсан.
Багш: В.Нямсүрэн
- 4.
Дарааллыг динамикаар
тодорхойлох шаардлага
Тэгвэл дарааллыг нэвтрүүлэх бас нэг арга нь нэг
холбоост жагсаалт ашиглах явдал юм.
Дарааллын зарчим ѐсоор дарааллын эхлэл,
төгсгөлийн хоѐр элемэнтээс бусад элемэнтэд
хандах шаардлагагүй байдаг.
Тиймээс нэг холбоост жагсаалтын эхлэл
төгсгөлийн элемэнтийг заах заагчийн
тусламжтайгаар дараалалд хийх үйлдлүүдийг
гүйцэтгэх боломжтой.
Багш: В.Нямсүрэн
- 5.
Дарааллыг нэг холбоост
жагсаалтаарилэрхийлэх
Дарааллыг нэг холбоост жагсаалтаар илэрхийлж
байгаа тул
Элемэнт буюу зангилаа нь өгөгдөл ба
холбоос гэсэн хоѐр хэсгээс тогтоно.
Хийгдэх үйлдлүүд нь дараалалд
зөвшөөрөгдсөн үйлдлүүд байна. Харин
дарааллыг динамикаар тодорхойлж байгаа
тул дүүрсэн эсэхийг шалгах үйлдэл
тодорхойлохгүй.
Багш: В.Нямсүрэн
- 6.
Давхар төгсгөлт дараалал
/DoubleEnded Queue/
Элемэнт нэмэх ба устгах үйлдлийг аль ч
төгсгөлд нь гүйцэтгэж болох дарааллыг давхар
төгсгөлт дараалал гэнэ.
Давхар төгсгөлт дараалал нь нэг талаас эсрэг
чиглэлтэй хоѐр дарааллын нэгдэл, нөгөө талаас
хоѐр стекийн нэгдэл юм.
Давхар төгсгөлт дарааллыг хоѐр холбоост
жагсаалт ашиглан нэвтрүүлэх нь зохимжтой.
Багш: В.Нямсүрэн
- 7.
Давхар төгсгөлт дараалал
Давхар төгсгөлт дарааллын тухайн нэг төгсгөлд
орсон элемэнт тэр төгсгөлөөрөө гарвал стекийн
зарчмаар, харин нөгөө төгсгөлөөрөө гарвал
дарааллын зарчмаар ажиллах болно
Багш: В.Нямсүрэн
- 8.
Давхар төгсгөлт дараалал
Мөн элемэнт нэмэх үйлдлийг нэг төгсгөлд,
элемэнт устгах үйлдлийг хоѐр төгсгөлд нь хийх
боломжтой давхар төгсгөлт дарааллыг оролт нь
хязгаарлагдмал давхар төгсгөлт дараалал
гэнэ.
Харин элемэнт нэмэх үйлдлийг хоѐр төгсгөлд,
элемэнт устгах үйлдлийг нэг төгсгөлд нь хийх
боломжтой давхар төгсгөлт дарааллыг гаралт
нь хязгаарлагдмал давхар төгсгөлт дараалал
гэнэ.
Багш: В.Нямсүрэн
- 9.
Эрэмбэт дараалал
/Priority Queue/
Хамгийн өндөр эрэмбэтэй элемэнтийг эхэлж
гаргах дарааллыг эрэмбэт дараалал гэнэ.
Өөрөөр хэлбэл эрэмбэт дараалал нь дараах
үйлдлүүдээр тодорхойлогдоно.
Элемэнт оруулах
Хамгийн өндөр эрэмбэтэй элемэнтийг гаргах
Хэрэв дараалалд ижил эрэмбэтэй элемэнтүүд
байвал тэдгээрийн эхэлж орсон нь эхэлж гарах
зарчмаар ажиллана
Багш: В.Нямсүрэн
- 10.
- 11.
Эрэмбэт дараалал
Эрэмбэт дараалллыг дараах аргуудаар
хэрэгжүүлж болно.
1. Эрэмбэт дарааллын элемэнтүүдийг орсон
дарааллаар хадгалан, харин дарааллын
хамгийн их буюу өндөр эрэмбэтэй элемэнтийг
хайж олон, түүнийг дарааллаас гаргана
2. Дараалалд элемэнт оруулахдаа дарааллын
төгсгөлөөс элемэнтүүдийн эрэмбэтэй
харьцуулан зохих байрлалд оруулна. Тиймээс
дарааллын элемэтүүд нь эрэмбэлэгдсэн байх
байх ба хамгийн өндөр эрэмбэтэй элемэнт нь
ямагт дарааллын эхэнд байрлах ба элемэнтийг
гаргахдаа шууд дарааллын эхнээс гаргана.
Багш: В.Нямсүрэн
- 12.
- 13.
- 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.
- 17.
ЭД-ыг санах ойгоос
чөлөөлөхустгагч функц
PriorityQueue::~PriorityQueue()
{
while (front != NULL)
{
PQNode* curr = front;
front = front->link;
delete curr;
}
rear = NULL;
}
Багш: В.Нямсүрэн
- 18.
- 19.
- 20.
- 21.
- 22.
ЭД-д элемэнт
нэмэх функц
voidPriorityQueue::Insert(int InsertItem)
{
PQNode*curr=new PQNode(InsertItem,NULL);
if(IsEmpty())
front=curr;
else
rear->link=curr;
rear=curr;
}
Багш: В.Нямсүрэн
- 23.
- 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.
- 26.
- 27.
- 28.
- 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.
- 31.
- 32.
- 33.
- 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;
}
}
Багш: В.Нямсүрэн