Doubly Linked List
Doubly Linked List
Doubly Linked List
adalah elemen-elemen yang dihubungkan dengan dua pointer dalam satu elemen dan list dapat melintas baik di depan (head) atau belakang (tail).Doubly Linked List berisi pointer tambahan, biasanya disebut pointer sebelumnya, bersama dengan pointer berikutnya dan data yang ada di Single Linked List.
Elemen-Elemen Dalam Doubly Linked List
- Data
- Pointer Next ( *next )
- Pointer Prev ( *prev )
Doubly Linked List: Insertion
Sebuah node dapat ditambahkan dengan empat cara:
- Di bagian depan Doubly Linked List
- Setelah node yang diberikan
- Di bagian belakang Doubly Linked List
- Sebelum node yang diberikan
InsertionFront (push depan)
void insertFront(int num){
struct data *curr = (struct data *)malloc(sizeof(struct data));
curr->num = num;
curr->next = NULL;
if(head == NULL){
head = tail = curr;
head->prev = NULL;
}else{
curr->next = head;
head->prev = curr;
head = curr;
}
}
InsertionBack (push belakang)
void insert Back(int num){
struct data *curr = (struct data *)malloc(sizeof(struct data));
curr->num = num;
curr->next = NULL;
if(head == NULL){
head = tail = curr;
head->prev = NULL;
}else{
tail->next = curr;
curr->prev =tail;
tail = curr;
}
}
Doubly Linked List: Delete
4 hal yang harus diperhatikan saat melakukan delete:
- Node yang akan dihapus adalah satu-satunya node dalam Linked List.
- Node yang akan dihapus adalah head.
- Node yang akan dihapus adalah tail.
- Node yang akan dihapus bukan head atau tail
DeleteFront (pop depan)
void deleteFront(){
struct data *curr = head;
if(curr){
head = head->next;
free(curr);
head->prev = NULL;
}
}
DeleteBack (pop belakang)
void deleteBack(){
struct data *curr = head;
if(curr){
tail = tail->prev;
free(curr);
tail->next = NULL;
}
}
Elemen-Elemen Dalam Doubly Linked List
- Data
- Pointer Next ( *next )
- Pointer Prev ( *prev )
Doubly Linked List: Insertion
Sebuah node dapat ditambahkan dengan empat cara:
- Di bagian depan Doubly Linked List
- Setelah node yang diberikan
- Di bagian belakang Doubly Linked List
- Sebelum node yang diberikan
InsertionFront (push depan)
void insertFront(int num){
struct data *curr = (struct data *)malloc(sizeof(struct data));
curr->num = num;
curr->next = NULL;
if(head == NULL){
head = tail = curr;
head->prev = NULL;
}else{
curr->next = head;
head->prev = curr;
head = curr;
}
}
InsertionBack (push belakang)
void insert Back(int num){
struct data *curr = (struct data *)malloc(sizeof(struct data));
curr->num = num;
curr->next = NULL;
if(head == NULL){
head = tail = curr;
head->prev = NULL;
}else{
tail->next = curr;
curr->prev =tail;
tail = curr;
}
}
Doubly Linked List: Delete
4 hal yang harus diperhatikan saat melakukan delete:
- Node yang akan dihapus adalah satu-satunya node dalam Linked List.
- Node yang akan dihapus adalah head.
- Node yang akan dihapus adalah tail.
- Node yang akan dihapus bukan head atau tail
DeleteFront (pop depan)
void deleteFront(){
struct data *curr = head;
if(curr){
head = head->next;
free(curr);
head->prev = NULL;
}
}
DeleteBack (pop belakang)
void deleteBack(){
struct data *curr = head;
if(curr){
tail = tail->prev;
free(curr);
tail->next = NULL;
}
}
Comments
Post a Comment