More Related Content
PPTX
DOCX
тоон дараалл хязгаар лекц№1 PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
What's hot
PPTX
PPTX
PDF
PDF
Эх функц ба тодорхой биш интеграл PDF
Олон хувьсагчтай функцийн уламжлал ба дифференциал PDF
Олон хувьсагчтай функцийн нөхцөлт экстремум, интеграл PDF
PDF
PDF
DOCX
DOCX
DOCX
2012 09 10 тоон дараалл хязгаар лекц№2 DOCX
DOCX
PPTX
ODT
PPT
Day 3 php working with string, number PDF
PDF
Viewers also liked
PPTX
PPTX
PPTX
PPTX
PPTX
DOCX
PPTX
PPTX
PPTX
ODP
Similar to Dsi lec9-copy
PPTX
PPTX
PPTX
PPT
PPT
PDF
u.cs101 "Алгоритм ба програмчлал" Лекц №5 PPT
001cclass 120926194905-phpapp02 PPTX
C++ vndsen oilgolt хичээл 1 PDF
PDF
u.cs101 "Алгоритм ба програмчлал" Лекц №2 PDF
PPTX
C++ vndsen oilgolt хичээл 1 DOC
DOCX
PPTX
PPTX
PDF
PPT
DOC
DOCX
Dsi lec9-copy
- 1.
- 2.
- 3.
Нэг холбоост бацикл
жагсаалтын бэрхшээл
Нэг холбоост ба цикл жагсаалтуудын хувьд
буцаж өмнөх элемэнтүүдрүүгээ дамжих
боломжгүй байдаг.
Хэрвээ одоогийн идэвхитэй элемэнтийн яг
өмнөх элемэнтрүү хандахын тулд заавал эхний
элемэнтээс/гадаад заагч байрлаж буй
элемэнтээс эхлэн элемэнт бүрт дараалан
хандаж байж тухайн элемэнтэд очно.
Багш: В.Нямсүрэн
- 4.
Хоёр холбоост жагсаалт
Жагсаалтын зангилаануудыг хоѐр чиглэлд
холбогддог байхаар зохион байгуулж болно.
Зангилаа бүр нь өмнө болон хойно орших
зангилааныхаа хаягийг агуулдаг элемэнтүүдийн
тогтоцыг хоёр холбоост жагсаалт /ХХЖ/ буюу
давхар жагсаалт гэнэ.
100 56 34 456
Хоѐр холбоост жагсаалт нь хэдийгээр
жагсаалтын дурын элемэнтэд хандах боломжгүй
хэдий ч хоѐр чиглэлтэй учир хийгдэх
үйлдлүүдийн хувьд илүү уян хатан юм.
Багш: В.Нямсүрэн
- 5.
Хоёр холбоост жагсаалт
Хоѐр холбоост жагсаалтын эхний элемэнтэд
өмнөх элемэнт, төгсгөлийн элемэнтэд дараагийн
элемэнт гэж байхгүй учраас тэдгээр зангилааны
харгалзах заагч талбарууд нь хоосон буюу NULL
утгыг заавал агуулсан байх ѐстой.
100 56 34 456
Багш: В.Нямсүрэн
- 6.
Хоёр холбоост
жагсаалтын зангилаа
Хоѐр холбоост жагсаалтын зангилаа нь гурван
хэсгээс бүрдэнэ.
back – өмнөх элемэнтийн санах ойн
үүрний хаягийг агуулах заагч талбар
456 info – өгөгдөл буюу мэдээллийг
агуулах талбар
next – дараагийн элемэнтийн санах
ойн үүрний хаягийг агуулах заагч талбар
Багш: В.Нямсүрэн
- 7.
Хоёр холбоост жагсаалтын
зангилаагилэрхийлэх:
Хоѐр холбоост жагсаалтын зангилааг дараах
DLNode классаар тодорхойлъѐ
class DLNode{
Data info;
DLNode* prev;
DLNode* next;
DLNode(Data ivalue, DLNode*pvalue,
DLNode* nvalue) {
info=ivalue;
prev=pvalue;
next=nvalue;
}
friend class DoubleLinkedList;
};
Багш: В.Нямсүрэн
- 8.
Хоёр холбоост жагсаалтыг
зохионбайгуулах
Хоѐр холбоост жагсаалтыг зохион байгуулахдаа
дараах гадаад заагчуудыг ашиглана.
хуй
head – эхлэлийн заагч
tail – төгсгөлийн заагч
curr – туслах заагч
Багш: В.Нямсүрэн
- 9.
Нэг холбоост жагсаалтад
хийгдэхүйлдлүүд
Дараах үйлдлүүдийг хоѐр чиглэлд гүйцэтгэх
боломжтой. /Ө.х эхлэлээс төгсгөлрүү эсвэл
төгсгөлөөс эхлэлрүү/
ХХЖ-ыг хоослох – MakeEmpty()
ХХЖ-аас элемэнт хайх – FindItem()
ХХЖ-ын элемэнтийн тоог буцаах – Count()
ХХЖ-ын элемэнтүүдийг хэвлэх – Print()
Багш: В.Нямсүрэн
- 10.
ХХЖ-ыг илэрхийлэх
хийсвэр төрлийгтодорхойлох
class DoubleLinkedList{
DLNode *head;
DLNode *tail;
public:
DoubleLinkedList ();
~DoubleLinkedList ();
bool IsEmpty();
void MakeEmpty();
Data First();
Data Last();
void AddFirst(Data item);
void AddLast (Data item);
void AddAfter(Data key, Data item);
void AddBefore(Data key, Data item);
Багш: В.Нямсүрэн
- 11.
ХХЖ-ыг илэрхийлэх
хийсвэр төрлийгтодорхойлох
void AddPosition( int pos, Data item);
void RemoveFirst();
void RemoveLast ();
void RemoveItem(Data key);
void RemoveBefore(Data key);
void RemoveAfter(Data key);
void RemovePosition(int key);
bool FindForward();
bool FindBackward();
int CountForward();
int CountBackward();
void PrintForward();
void PrintBackward();
};
Багш: В.Нямсүрэн
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
ХХЖ-ын эхэнд
элемэнт нэмэх
voidDoubleLinkedList::AddFirst(Data item){
DLNode *curr=new DLNode(item, NULL, head);
if(IsEmpty())
tail = curr;
else
head->prev = curr;
head = curr;
}
Багш: В.Нямсүрэн
- 22.
- 23.
ХХЖ-ын өгөгдсөн элемэнтийн
өмнөэлемэнт нэмж оруулах
void DoubleLinkedList::AddBefore(Data key,
Data item){
DLNode *prevCurr = NULL;
DLNode *nextCurr=head;
while(nextCurr->info != key){
prevCurr = nextCurr;
nextCurr=nextCurr->next;
if(nextCurr == NULL)
cout<<"element oldsongui";
}
Багш: В.Нямсүрэн
- 24.
ХХЖ-ын өгөгдсөн элемэнтийн
өмнөэлемэнт нэмж оруулах
if(nextCurr==head){
DLNode* curr = new
DLNode(item,NULL,nextCurr);
nextCurr->prev = curr;
head = curr;
}
else{
DLNode* curr = new
DLNode(item,prevCurr,nextCurr);
prevCurr->next = curr;
nextCurr->prev=curr;
}
}
Багш: В.Нямсүрэн
- 25.
ХХЖ-ын эхэнд
элемэнт нэмэх
prevCurr Өгөгдсөн элемэнт: 40
Шинэ элемэнт: 100
nextCurr
head tail
56 36 40 12 456
Багш: В.Нямсүрэн
- 26.
ХХЖ-ын эхэнд
элемэнт нэмэх
Өгөгдсөн элемэнт: 40
Шинэ элемэнт: 100
prevCurr nextCurr
head tail
56 36 40 12 456
Багш: В.Нямсүрэн
- 27.
ХХЖ-ын эхэнд
элемэнт нэмэх
curr Өгөгдсөн элемэнт: 40
Шинэ элемэнт: 100
100
prevCurr nextCurr
head tail
56 36 40 12 456
Багш: В.Нямсүрэн
- 28.
ХХЖ-ын төгсгөлийн
элемэнтийг устгах
voidDoubleLinkedList::RemoveLast(){
if(!IsEmpty()){
DLNode* curr = tail;
if(head->next == NULL)
head = NULL;
else{
tail->prev->next = NULL;
tail = tail->prev;
}
delete curr;
}
else cout<<"DoubleLinkedList is empty";
}
Багш: В.Нямсүрэн