Single linked list

Preview:

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");

}

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

Recommended