Upload
mijiddorj-renchin-ochir
View
424
Download
7
Tags:
Embed Size (px)
Citation preview
Жагсаалтыг заагчаар зохион
байгуулах
Жагсаалтыг заагчаар зохион байгуулах
• Тодорхойлолт:Шугаман (дараалсан) зохион байгуулалттай, өөр хоорондоо холбоотой элементүүдийн олонлогийг жагсаалт гэж үзэж болно. Элементийг нь жагсаалтын зангилаа(node) гэдэг. Тухайн зангилааны заагч нь дараагийн зангилааны хаягийг агуулж байвал нэг холбоост жагсаалт гэдэг.
Жагсаалтыг заагчаар зохион байгуулах
• Тодорхойлолтоос гарах төсөөлөл нь:
5
head
7 8 9
tail
Жагсаалтыг заагчаар зохион байгуулах
• Зурагт харгалзах өгөгдлийн төрөл нь:
9
typedef int elem;typedef struct node {
elem data;struct node* next;
} node_t;
node_t
data
next
a node
Жагсаалтыг заагчаар зохион байгуулах
• Өгөгдлийн төрөл гэж юу? Хаана ашиглагдах вэ? Доорх текстийн аль нь
өгөгдлийн төрөл вэ?
9
typedef int elem;typedef struct node {
elem data;struct node* next;
} node_t;
node_t
data
next
a node
Жагсаалтад элемент нэмэх
void insert_node(posi p, elem x)
{ posi temp;
temp = p->next;
p->next=(posi)malloc(sizeof(list));
p->next->data=x;
p->next->next=temp;
}
5 7 8 9
p
data
next
void insert_node(posi p, elem x)
{ posi temp;
temp = p->next;
p->next=(posi)malloc(sizeof(list));
p->next->data=x;
p->next->next=temp;
}
5 7 8
p
data
next
temp
9
void insert_node(posi p, elem x)
{ posi temp;
temp = p->next;
p->next=(posi)malloc(sizeof(list));
p->next->data=x;
p->next->next=temp;
}
5 7 8
p temp
data
next
9
void insert_node(posi p, elem x)
{ posi temp;
temp = p->next;
p->next=(posi)malloc(sizeof(list));
p->next->data=x;
p->next->next=temp;
}
5 7 8
p temp
data
next
9
void insert_node(posi p, elem x)
{ posi temp;
temp = p->next;
p->next=(posi)malloc(sizeof(list));
p->next->data=x;
p->next->next=temp;
}
5 7 8
p temp
data
next
9
void insert_node(posi p, elem x)
{ posi temp;
temp = p->next;
p->next=(posi)malloc(sizeof(list));
p->next->data=x;
p->next->next=temp;
}
5 7 8
p temp
data
next
x
9
void insert_node(posi p, elem x)
{ posi temp;
temp = p->next;
p->next=(posi)malloc(sizeof(list));
p->next->data=x;
p->next->next=temp;
}
5 7 8
p temp
data
next
x
9
void insert_node(posi p, elem x)
{ posi temp;
temp = p->next;
p->next=(posi)malloc(sizeof(list));
p->next->data=x;
p->next->next=temp;
}
5 7 8
p
x
9
5 7 8
p
x 9
Жагсаалтаас элемент устгах
void delete_node(posi p)
{ posi temp;
temp=p->next;
p->next=p->next->next;
free(temp);
}
5 7 8
p
data
next
9
void delete_node(posi p)
{ posi temp;
temp=p->next;
p->next=p->next->next;
free(temp);
}
5 7 8
p
data
next
temp
9
void delete_node(posi p)
{ posi temp;
temp=p->next;
p->next=p->next->next;
free(temp);
}
5 7 8
p
data
next
temptemp
9
void delete_node(posi p)
{ posi temp;
temp=p->next;
p->next=p->next->next;
free(temp);
}
5 7 8
p
data
next
temptemp
9
void delete_node(posi p)
{ posi temp;
temp=p->next;
p->next=p->next->next;
free(temp);
}
5 7
p
data
next
temptemp
9
void delete_node(posi p)
{ posi temp;
temp=p->next;
p->next=p->next->next;
free(temp);
}
5 7
p
data
next
9
5 7
p
9
Асуулт• p=MAKENULL(L); үйлдлийн зураглал
ямар байх вэ?
• Хоосон байхад элемент нэмэх зураглал ямар байх вэ?
• Нэг элементтэй байхад элемент нэмэх (түүний өмнө ба хойно нь нэмэх) зураглал ямар байх вэ?
Асуулт• Жагсаалтын элементийг хоосон
болтол устгах зураглал ямар байх вэ?
• Хоосон болох үед “p” заагчийн утга ямар байх вэ?
Даалгаварint main(){
list l; posi p;
p=Makenull(l);
insert_node(p,5);
insert_node(p,15);
print_list(l);
p=Next(p);
insert_node(p,25);
print_list(l);
p=Locate(l,5);
delete_node(p);
print_list(l);
system("pause");
}
• Кодыг зургаар тайлбарлана уу.