28
Жагсаалтыг заагчаар зохион байгуулах

Single linked list

Embed Size (px)

Citation preview

Page 1: Single linked list

Жагсаалтыг заагчаар зохион

байгуулах

Page 2: Single linked list

Жагсаалтыг заагчаар зохион байгуулах

• Тодорхойлолт:Шугаман (дараалсан) зохион байгуулалттай, өөр хоорондоо холбоотой элементүүдийн олонлогийг жагсаалт гэж үзэж болно. Элементийг нь жагсаалтын зангилаа(node) гэдэг. Тухайн зангилааны заагч нь дараагийн зангилааны хаягийг агуулж байвал нэг холбоост жагсаалт гэдэг.

Page 3: Single linked list

Жагсаалтыг заагчаар зохион байгуулах

• Тодорхойлолтоос гарах төсөөлөл нь:

5

head

7 8 9

tail

Page 4: Single linked list

Жагсаалтыг заагчаар зохион байгуулах

• Зурагт харгалзах өгөгдлийн төрөл нь:

9

typedef int elem;typedef struct node {

elem data;struct node* next;

} node_t;

node_t

data

next

a node

Page 5: Single linked list

Жагсаалтыг заагчаар зохион байгуулах

• Өгөгдлийн төрөл гэж юу? Хаана ашиглагдах вэ? Доорх текстийн аль нь

өгөгдлийн төрөл вэ?

9

typedef int elem;typedef struct node {

elem data;struct node* next;

} node_t;

node_t

data

next

a node

Page 6: Single linked list

Жагсаалтад элемент нэмэх

Page 7: Single linked list

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

Page 8: Single linked list

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

Page 9: Single linked list

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

Page 10: Single linked list

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

Page 11: Single linked list

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

Page 12: Single linked list

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

Page 13: Single linked list

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

Page 14: Single linked list

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

Page 15: Single linked list

5 7 8

p

x 9

Page 16: Single linked list

Жагсаалтаас элемент устгах

Page 17: Single linked list

void delete_node(posi p)

{ posi temp;

temp=p->next;

p->next=p->next->next;

free(temp);

}

5 7 8

p

data

next

9

Page 18: Single linked list

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

Page 19: Single linked list

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

Page 20: Single linked list

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

Page 21: Single linked list

void delete_node(posi p)

{ posi temp;

temp=p->next;

p->next=p->next->next;

free(temp);

}

5 7

p

data

next

temptemp

9

Page 22: Single linked list

void delete_node(posi p)

{ posi temp;

temp=p->next;

p->next=p->next->next;

free(temp);

}

5 7

p

data

next

9

Page 23: Single linked list

5 7

p

9

Page 24: Single linked list

Асуулт• p=MAKENULL(L); үйлдлийн зураглал

ямар байх вэ?

• Хоосон байхад элемент нэмэх зураглал ямар байх вэ?

• Нэг элементтэй байхад элемент нэмэх (түүний өмнө ба хойно нь нэмэх) зураглал ямар байх вэ?

Page 25: Single linked list

Асуулт• Жагсаалтын элементийг хоосон

болтол устгах зураглал ямар байх вэ?

• Хоосон болох үед “p” заагчийн утга ямар байх вэ?

Page 26: Single linked list

Даалгавар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");

}

• Кодыг зургаар тайлбарлана уу.

Page 27: Single linked list
Page 28: Single linked list