pertemuan kedua 03-03-2020
Hari ini saya diajarkan pengaplikasian linked list menggunakan bahasa pemrograman tertentu yaitu bahasa C. Dibutuhkan sebuah library tambahan yaitu <stdlib.h>.
Single Linked List
Inisialisasi struct yang dibutuhkan seperti dibawah ini
struct data{
int value;
struct data*next;
}*head=NULL,*tail,*curr;
Saya diajarkan fungsi push dan pop yang masing-masing bisa dari depan maupun belakang.
dibawah ini adalah source code untuk masing-masing push dan pop.
Push depan
void pushdepan(int x){
curr = (struct data*)malloc(sizeof(struct data));
curr->value=x;
if(head==NULL){//linked list kosong
head=tail=curr;
}
else{
curr->next = head;
head = curr;
}
tail->next = NULL;
}
push belakang
void pushbelakang(int x){
curr = (struct data*)malloc(sizeof(struct data));
curr->value=x;
if(head==NULL){//linked list kosong
head=tail=curr;
}
else{
tail->next = curr;
tail = curr;
}
tail->next = NULL;
}
Pop depan
void popdepan(){
curr = head;
if(tail == head){
free(curr);
tail = head = curr = NULL;
}
else
{
curr = curr->next;
free(head);
head = curr;
}
}
Pop belakang
Double Linked List
Hampir sama seperti inisialisasi struct pada Single Linked List, pada Double Linked List ditambahkan parameter tambahan yaitu "prev" seperti dibawah ini
struct Data
{
int value;
struct Data *next,*prev;
}*head,*curr,*tail;
Saya juga diajarkan fungsi push dan pop. dibawah ini adalah source code untuk masing-masing push dan pop.
Push
void push(int a)
{
curr = (struct Data*)malloc(sizeof(struct Data));
curr->value = a;
if(head==NULL){
head = tail = curr;
}
else{
tail->next = curr;
curr->prev = tail;
tail = curr;
}
head->prev = tail->next = NULL;
}
Pop
void pop()
{
if(tail == head){
free(curr);
tail = head = curr = NULL;
}
else
{
tail = tail->prev;
free(tail->next);
tail->next = NULL;
}
}
Single Linked List
Inisialisasi struct yang dibutuhkan seperti dibawah ini
struct data{
int value;
struct data*next;
}*head=NULL,*tail,*curr;
Saya diajarkan fungsi push dan pop yang masing-masing bisa dari depan maupun belakang.
dibawah ini adalah source code untuk masing-masing push dan pop.
Push depan
void pushdepan(int x){
curr = (struct data*)malloc(sizeof(struct data));
curr->value=x;
if(head==NULL){//linked list kosong
head=tail=curr;
}
else{
curr->next = head;
head = curr;
}
tail->next = NULL;
}
push belakang
void pushbelakang(int x){
curr = (struct data*)malloc(sizeof(struct data));
curr->value=x;
if(head==NULL){//linked list kosong
head=tail=curr;
}
else{
tail->next = curr;
tail = curr;
}
tail->next = NULL;
}
Pop depan
void popdepan(){
curr = head;
if(tail == head){
free(curr);
tail = head = curr = NULL;
}
else
{
curr = curr->next;
free(head);
head = curr;
}
}
Pop belakang
void popbelakang(){
curr = head;
if(tail == head){
free(curr);
tail = head = curr = NULL;
}
else
{
while(curr->next!=tail){
curr = curr->next;
}
free(tail);
tail = curr;
tail->next = NULL;
}
}
Double Linked List
Hampir sama seperti inisialisasi struct pada Single Linked List, pada Double Linked List ditambahkan parameter tambahan yaitu "prev" seperti dibawah ini
struct Data
{
int value;
struct Data *next,*prev;
}*head,*curr,*tail;
Push
void push(int a)
{
curr = (struct Data*)malloc(sizeof(struct Data));
curr->value = a;
if(head==NULL){
head = tail = curr;
}
else{
tail->next = curr;
curr->prev = tail;
tail = curr;
}
head->prev = tail->next = NULL;
}
Pop
void pop()
{
if(tail == head){
free(curr);
tail = head = curr = NULL;
}
else
{
tail = tail->prev;
free(tail->next);
tail->next = NULL;
}
}
Comments
Post a Comment