Submit Search
Upload
Өгөгдлийн бүтэц 8,9
•
1 like
•
1,042 views
International Ulaanbaatar University
Follow
Өгөгдлийн бүтэц 8,9
Read less
Read more
Education
Report
Share
Report
Share
1 of 38
Recommended
Өгөгдлийн бүтэц 11
Өгөгдлийн бүтэц 11
International Ulaanbaatar University
Өгөгдлийн бүтэц 13
Өгөгдлийн бүтэц 13
International Ulaanbaatar University
Өгөгдлийн бүтэц
Өгөгдлийн бүтэц
Muuluu
Өгөгдлийн бүтэц 15
Өгөгдлийн бүтэц 15
International Ulaanbaatar University
Dsi lec5
Dsi lec5
ggmo86
database 12
database 12
Usukhuu Galaa
Лекц №10
Лекц №10
Amarsaikhan Tuvshinbayar
Өгөгдлийн бүтэц 12
Өгөгдлийн бүтэц 12
International Ulaanbaatar University
Recommended
Өгөгдлийн бүтэц 11
Өгөгдлийн бүтэц 11
International Ulaanbaatar University
Өгөгдлийн бүтэц 13
Өгөгдлийн бүтэц 13
International Ulaanbaatar University
Өгөгдлийн бүтэц
Өгөгдлийн бүтэц
Muuluu
Өгөгдлийн бүтэц 15
Өгөгдлийн бүтэц 15
International Ulaanbaatar University
Dsi lec5
Dsi lec5
ggmo86
database 12
database 12
Usukhuu Galaa
Лекц №10
Лекц №10
Amarsaikhan Tuvshinbayar
Өгөгдлийн бүтэц 12
Өгөгдлийн бүтэц 12
International Ulaanbaatar University
Өгөгдлийн бүтэц 10
Өгөгдлийн бүтэц 10
International Ulaanbaatar University
массив
массив
Khishighuu Myanganbuu
Datastructure algoritm
Datastructure algoritm
Nergui Batjargal
U.cs101 алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
Badral Khurelbaatar
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд
Bayalagmaa Davaanyam
U.cs101 алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
Badral Khurelbaatar
Өгөгдлийн бүтэц 2-3
Өгөгдлийн бүтэц 2-3
International Ulaanbaatar University
C cons
C cons
Onon Tuul
тооллын сис 10т 2т
тооллын сис 10т 2т
Narantungaa
It101 lec6 10.06
It101 lec6 10.06
Nergui Batjargal
Lesson 7
Lesson 7
Lha Bolorerdene
Sw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess Modifiers
Jargalsaikhan Alyeksandr
Day 1 database
Day 1 database
ETC
U.cs101 алгоритм программчлал-3
U.cs101 алгоритм программчлал-3
Badral Khurelbaatar
өгөгдлийн сан
өгөгдлийн сан
Onon Tuul
Sw203 Lecture8 Interface
Sw203 Lecture8 Interface
Jargalsaikhan Alyeksandr
тооллын систем
тооллын систем
Munkhuu Buyanaa
Lecture 5
Lecture 5
Muuluu
U.cs101 lecture 6
U.cs101 lecture 6
Badral Khurelbaatar
Algebr ba-geometr-n2-haritsaa
Algebr ba-geometr-n2-haritsaa
amartuvshind
Lec8
Lec8
International Ulaanbaatar University
Lec7
Lec7
International Ulaanbaatar University
More Related Content
What's hot
Өгөгдлийн бүтэц 10
Өгөгдлийн бүтэц 10
International Ulaanbaatar University
массив
массив
Khishighuu Myanganbuu
Datastructure algoritm
Datastructure algoritm
Nergui Batjargal
U.cs101 алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
Badral Khurelbaatar
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд
Bayalagmaa Davaanyam
U.cs101 алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
Badral Khurelbaatar
Өгөгдлийн бүтэц 2-3
Өгөгдлийн бүтэц 2-3
International Ulaanbaatar University
C cons
C cons
Onon Tuul
тооллын сис 10т 2т
тооллын сис 10т 2т
Narantungaa
It101 lec6 10.06
It101 lec6 10.06
Nergui Batjargal
Lesson 7
Lesson 7
Lha Bolorerdene
Sw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess Modifiers
Jargalsaikhan Alyeksandr
Day 1 database
Day 1 database
ETC
U.cs101 алгоритм программчлал-3
U.cs101 алгоритм программчлал-3
Badral Khurelbaatar
өгөгдлийн сан
өгөгдлийн сан
Onon Tuul
Sw203 Lecture8 Interface
Sw203 Lecture8 Interface
Jargalsaikhan Alyeksandr
тооллын систем
тооллын систем
Munkhuu Buyanaa
Lecture 5
Lecture 5
Muuluu
U.cs101 lecture 6
U.cs101 lecture 6
Badral Khurelbaatar
Algebr ba-geometr-n2-haritsaa
Algebr ba-geometr-n2-haritsaa
amartuvshind
What's hot
(20)
Өгөгдлийн бүтэц 10
Өгөгдлийн бүтэц 10
массив
массив
Datastructure algoritm
Datastructure algoritm
U.cs101 алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд
U.cs101 алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
Өгөгдлийн бүтэц 2-3
Өгөгдлийн бүтэц 2-3
C cons
C cons
тооллын сис 10т 2т
тооллын сис 10т 2т
It101 lec6 10.06
It101 lec6 10.06
Lesson 7
Lesson 7
Sw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess Modifiers
Day 1 database
Day 1 database
U.cs101 алгоритм программчлал-3
U.cs101 алгоритм программчлал-3
өгөгдлийн сан
өгөгдлийн сан
Sw203 Lecture8 Interface
Sw203 Lecture8 Interface
тооллын систем
тооллын систем
Lecture 5
Lecture 5
U.cs101 lecture 6
U.cs101 lecture 6
Algebr ba-geometr-n2-haritsaa
Algebr ba-geometr-n2-haritsaa
More from International Ulaanbaatar University
Lec8
Lec8
International Ulaanbaatar University
Lec7
Lec7
International Ulaanbaatar University
Lec5 6
Lec5 6
International Ulaanbaatar University
Lec4
Lec4
International Ulaanbaatar University
Lec3
Lec3
International Ulaanbaatar University
Lec2
Lec2
International Ulaanbaatar University
Lec1
Lec1
International Ulaanbaatar University
Визуаль програмчлал бие даалт
Визуаль програмчлал бие даалт
International Ulaanbaatar University
ОХШЗ - Бие Даалт
ОХШЗ - Бие Даалт
International Ulaanbaatar University
Ood lesson12.1 ---------
Ood lesson12.1 ---------
International Ulaanbaatar University
Ood lesson11 sequence
Ood lesson11 sequence
International Ulaanbaatar University
Ood lesson10 statechart
Ood lesson10 statechart
International Ulaanbaatar University
Ood lesson9 activity
Ood lesson9 activity
International Ulaanbaatar University
Ood lesson7,8 class
Ood lesson7,8 class
International Ulaanbaatar University
Ood lesson6 class
Ood lesson6 class
International Ulaanbaatar University
Ood lesson5
Ood lesson5
International Ulaanbaatar University
Ood lesson4
Ood lesson4
International Ulaanbaatar University
Ood lesson3
Ood lesson3
International Ulaanbaatar University
Ood lesson2
Ood lesson2
International Ulaanbaatar University
Ood lesson1
Ood lesson1
International Ulaanbaatar University
More from International Ulaanbaatar University
(20)
Lec8
Lec8
Lec7
Lec7
Lec5 6
Lec5 6
Lec4
Lec4
Lec3
Lec3
Lec2
Lec2
Lec1
Lec1
Визуаль програмчлал бие даалт
Визуаль програмчлал бие даалт
ОХШЗ - Бие Даалт
ОХШЗ - Бие Даалт
Ood lesson12.1 ---------
Ood lesson12.1 ---------
Ood lesson11 sequence
Ood lesson11 sequence
Ood lesson10 statechart
Ood lesson10 statechart
Ood lesson9 activity
Ood lesson9 activity
Ood lesson7,8 class
Ood lesson7,8 class
Ood lesson6 class
Ood lesson6 class
Ood lesson5
Ood lesson5
Ood lesson4
Ood lesson4
Ood lesson3
Ood lesson3
Ood lesson2
Ood lesson2
Ood lesson1
Ood lesson1
Өгөгдлийн бүтэц 8,9
1.
LOGO Лекц №9 Хоёр холбоост
жагсаалт
2.
Хичээлийн агуулга
3.
Нэг холбоост ба
цикл жагсаалтын бэрхшээл Нэг холбоост ба цикл жагсаалтуудын хувьд буцаж өмнөх элемэнтүүд рүүгээ дамжих боломжгүй байдаг. Хэрвээ одоогийн идэвхитэй элемэнтийн яг өмнөх элемэнтрүү хандахын тулд заавал эхний элемэнтээс/гадаад заагч байрлаж буй элемэнтээс эхлэн элемэнт бүрт дараалан хандаж байж тухайн элемэнтэд очно.
4.
Жагсаалтын зангилаануудыг
хоёр чиглэлд холбогддог байхаар зохион байгуулж болно. Зангилаа бүр нь өмнө болон хойно орших зангилааныхаа хаягийг агуулдаг элемэнтүүдийн тогтоцыг хоёр холбоост жагсаалт /ХХЖ/ буюу давхар жагсаалт гэнэ. Хоёр холбоост жагсаалт нь хэдийгээр жагсаалтын дурын элемэнтэд хандах боломжгүй хэдий ч хоёр чиглэлтэй учир хийгдэх үйлдлүүдийн хувьд илүү уян хатан юм. Хоёр холбоост жагсаалт 45634100 56
5.
Хоёр холбоост
жагсаалтын эхний элемэнтэд өмнөх элемэнт, төгсгөлийн элемэнтэд дараагийн элемэнт гэж байхгүй учраас тэдгээр зангилааны харгалзах заагч талбарууд нь хоосон буюу NULL утгыг заавал агуулсан байх ёстой. Хоёр холбоост жагсаалт 100 56 34 456
6.
Хоёр холбоост
жагсаалтын зангилаа нь гурван хэсгээс бүрдэнэ. Хоёр холбоост жагсаалтын зангилаа back – өмнөх элемэнтийн санах ойн үүрний хаягийг агуулах заагч талбар info – өгөгдөл буюу мэдээллийг агуулах талбар next – дараагийн элемэнтийн санах ойн үүрний хаягийг агуулах заагч талбар 456
7.
Хоёр холбоост
жагсаалтын зангилааг дараах DLNode классаар тодорхойлъё class DLNode{ Data info; DLNode* prev; DLNode* next; DLNode(Data ivalue, DLNode*pvalue=NULL, DLNode* nvalue=NULL) { info=ivalue; prev=pvalue; next=nvalue; } friend class DoubleLinkedList; }; Хоёр холбоост жагсаалтын зангилааг илэрхийлэх:
8.
Хоёр холбоост
жагсаалтыг зохион байгуулахдаа дараах гадаад заагчуудыг ашиглана. хуй Хоёр холбоост жагсаалтыг зохион байгуулах head – эхлэлийн заагч tail – төгсгөлийн заагч curr – туслах заагч
9.
Нэг холбоост жагсаалтад хийгдэх
үйлдлүүд ХХЖ-д элемэнт нэмж оруулах Жагсаалтын эхэнд элемэнт нэмэх AddFirst() Жагсаалтын дунд элемэнт нэмэх Өгөгдсөн элемэнтийн өмнө AddBefore() Өгөгдсөн элемэнтийн хойно AddAfter() Өгөгдсөн байрлалд AddPosition() Жагсаалтын төгсгөлд элемэнт нэмэх AddLast()
10.
Нэг холбоост жагсаалтад хийгдэх
үйлдлүүд ХХЖ-аас элемэнт устгах Жагсаалтын эхлэлээс устггах RemoveFirst() Жагсаалтын дундаас устгах Өгөгдсөн элемэнтийн өмнөх RemoveBefore() Өгөгдсөн элемэнтийн ардах RemoveAfter() Өгөгдсөн байрлал дахь RemovePosition() Өгөгдсөн утгатай RemoveItem() Жагсаалтын төгсгөлөөс устгах RemoveLast()
11.
Нэг холбоост жагсаалтад хийгдэх
үйлдлүүд ХХЖ-ыг хоослох – MakeEmpty() ХХЖ-аас элемэнт хайх – FindItem() ХХЖ-ын элемэнтийн тоог буцаах – Count() ХХЖ-ын элемэнтүүдийг хэвлэх – Print() Дараах үйлдлүүдийг хоёр чиглэлд гүйцэтгэх боломжтой. /Ө.х эхлэлээс төгсгөлрүү эсвэл төгсгөлөөс эхлэлрүү/
12.
Нэг холбоост жагсаалтад хийгдэх
үйлдлүүд ХХЖ хоосон эсэхийг шалгах – IsEmpty() ХХЖ-ын эхний элемэнтийн утгыг буцаах – First() ХХЖ-ын төгсгөлийн элемэнтийн утгыг буцаах– Last()
13.
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); ХХЖ-ыг илэрхийлэх хийсвэр төрлийг тодорхойлох
14.
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(); }; ХХЖ-ыг илэрхийлэх хийсвэр төрлийг тодорхойлох
15.
DoubleLinkedList::DoubleLinkedList() { head=tail=NULL; } Тайлбар: DoubleLinkedList DList; // DList
нэртэй хоёр холбоост жагсаалт үүсгэж байна. ХХЖ-ыг үүсгэх байгуулагч функц: head tail
16.
DoubleLinkedList::~DoubleLinkedList(){ MakeEmpty(); } ХХЖ-ыг санах ойгоос чөлөөлөх
устгагч функц:
17.
void DoubleLinkedList::MakeEmpty() { DLNode *curr=NULL; while
(tail!=NULL) { if(tail==head) head=head->prev; curr = tail; tail = tail->prev; delete curr; } tail = NULL; } ХХЖ-ыг хоослох
18.
Тайлбар: Устгагч функц
нь MakeEmpty() функцийг дуудна. MakeEmpty() функц нь үүсгэсэн цикл жагсаалтын элемэнтүүдийг санах ойгоос чөлөөлөх буюу цикл жагсаалтыг хоослоно. MakeEmpty() функц нь туслах заагч/curr/-ийг ашиглан эхлэлийн элемэнтээс эхлэн элемэнтүүдийг нэг нэгээр санах ойгоос чөлөөлнө. Бүх элемэнтүүдийг чөлөөлсний дараа хоосон хоёр холбоост жагсаалт үлдэнэ. ХХЖ-ыг санах ойгоос бүрэн чөлөөлөх устгагч функц:
19.
ХХЖ-ыг хоослох 100 56
34 456 curr head tail
20.
ХХЖ-ыг хоослох 100 56
34 456 curr head tail
21.
ХХЖ-ыг хоослох 100 56
34 currhead tail
22.
ХХЖ-ыг хоослох 100 56 currhead
tail
23.
ХХЖ-ыг хоослох 100 currheadtail
24.
ХХЖ-ыг хоослох currheadtail
25.
Хоёр холбоост жагсаалт Устгагч
функц: Тайлбар: Устгагч функц нь байгуулагч функцээр болон тухайн хийсвэр төрлөөр санах ойд хуваарилагсдсан хувьсагчдыг санах ойгоос чөлөөлнө. currheadtail
26.
bool DoubleLinkedList::IsEmpty(){ if (
head == NULL && tail==NULL) return true; return false; } Тайлбар: Эхлэлийн заагч /head/ болон төгсгөлийн заагч /tail/-ууд нь хоосон/NULL/ утгатай бол хоёр холбоост жагсаалт хоосон байна буюу true утга, хоосон/NULL/-оос ялгаатай бол хоосон биш буюу false утга буцаана. ХХЖ-ыг хоосон эсэхийг шалгах
27.
void DoubleLinkedList::AddFirst(Data item){ DLNode
*curr=new DLNode(item, NULL, head); if(IsEmpty()) tail = curr; else head->prev = curr; head = curr; } ХХЖ-ын эхэнд элемэнт нэмэх
28.
Тайлбар: 1. Шинэ элемэнтийг
санах ойд хуваарилах ба уг зангилааны өмнөх элемэнтийг заах заагч талбараар хоосон/NULL/- ыг заалган, дараагийн элемэнтийг заах заагч талбараар эхлэлтийг заагчийн зааж буй утгыг заалгана. 2. ХХЖ хоосон эсэхийг шалгана. 2. А. Хэрвээ ХХЖ хоосон бол төгсгөлийн заагчийг шинэ элемэнтэд шилжүүлнэ. 2. B. Харин ХХЖ хоосон биш бол эхний элемэнтийн өмнөх элемэнтийг заах заагч талбараар шинэ элемэнтийг заалгана. 3. Эхлэлийн заагчийг шинэ элемэнтэд шилжүүлнэ. ХХЖ-ын эхэнд элемэнт нэмэх
29.
ХХЖ-ын эхэнд элемэнт нэмэх curr
head tail head tailcurr 100 56 ... 456 100
30.
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"; } ХХЖ-ын өгөгдсөн элемэнтийн өмнө элемэнт нэмж оруулах
31.
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; } } ХХЖ-ын өгөгдсөн элемэнтийн өмнө элемэнт нэмж оруулах
32.
Тайлбар: 1. Өгөгдсөн элемэнтийн
хайна. Үүний тулд nextCurr/өгөгдсөн элемэнтийг олоход ашиглана/, prevCurr/nextCurr заагчийн зааж байгаа зангилааны өмнөх элемэнтийг заана/ заагчуудыг ашиглана. 2. nextCurr заагчийн утгыг шалгана. 2.А. Хэрвээ NULL-тай тэнцүү бол өгөгдсөн элемэнт байхгүй буюу элемэнт оруулах боломжгүй. 2.B. Хэрвээ head заагчтай тэнцүү бол жагсаалтын эхэнд элемэнт нэмэх үйлдлийг гүйцэтгэнэ. ХХЖ-ын өгөгдсөн элемэнтийн өмнө элемэнт нэмж оруулах
33.
Тайлбар: 2.C. Дээрх хоёр
нөхцөлийн аль нь ч биелэхгүй бол шинэ элемэнтийг өгөгдсөн байрлалд оруулна/curr заагчаар заалгана/. Үүний түлд: 1. Шинэ элемэнтийн өмнөх элемэнтийг заах заагчаар prevCurr заагчийн зааж байгаа элемэнтийг, дараагийн элемэнтийг заах заагчаар nextCurr заагчийн зааж байгаа элемэнтийг заалгана. 2. prevCurr заагчийн зааж байгаа элемэнтийн дараагийн элемэнтийг заах заагч талбараар шинэ элемэнтийг заалгана. 3. nextCurr заагчийн зааж байгаа элемэнтийн өмнөх элемэнтийг заах заагч талбараар шинэ элемэнтийг заалгана. ХХЖ-ын өгөгдсөн элемэнтийн өмнө элемэнт нэмж оруулах
34.
ХХЖ-ын эхэнд элемэнт нэмэх head
tail 56 12 45636 40 nextCurr prevCurr Өгөгдсөн элемэнт: 40 Шинэ элемэнт: 100
35.
ХХЖ-ын эхэнд элемэнт нэмэх head
tail 56 12 45636 40 prevCurr nextCurr Өгөгдсөн элемэнт: 40 Шинэ элемэнт: 100
36.
ХХЖ-ын эхэнд элемэнт нэмэх head
tail curr 100 56 12 45636 40 prevCurr nextCurr Өгөгдсөн элемэнт: 40 Шинэ элемэнт: 100
37.
void DoubleLinkedList::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"; } ХХЖ-ын төгсгөлийн элемэнтийг устгах
38.
Тайлбар: 1. ХХЖагсаалт хоосон
эсэхийг шалгана. 2. А. ХХЖ хоосон бол DoubleLinkedList is empty мэдээллийг хэвлэнэ. 2. В. Хоосон биш бол дараах алхамуудыг гүйцэтгэнэ. 2.1. Туслах заагч/curr/-ийг зарлан, түүгээр төгсгөлийн зангилааг заалгана. ХХЖ-ын төгсгөлийн элемэнтийг устгах