Professional Documents
Culture Documents
Disusun Oleh :
Nama : M. Iqbal Nahdliansyah
NRP : 2210171031
Kelas : 2 D4 TKB
#include <stdio.h>
#include <stdlib.h>
struct Node{
int data; //vairabel data digunakan untuk mengisi nilai
struct Node *next; //pointer Next digunakan untuk menghubungkan Node
};
int main(){
Output
MENAMBAHKAN 5 NODE SECARA DINAMIS MENGGUNAKAN
WHILE LOOP DAN MENAMPILKANNYA PADA LINKED LIST
Source Code
#include <stdio.h>
#include <stdlib.h>
struct Node{
int data;
struct Node *next;
};
int main(){
struct Node *head = NULL;
struct Node *cursor = NULL;
int i;
i=0;
while (i<5){
struct Node *caraloop = malloc (sizeof(struct Node));
caraloop -> data = i;
caraloop -> next = NULL;
if (i==0){
head = caraloop;
}else{
cursor -> next = caraloop;
}
cursor = caraloop;
printf("%d",cursor -> data);
i++;
Output
Analisa
Pada percobaan ini, dilakukan pembuatan pembuatan node secara otomatis
menggunakan while loop, dimana node pertama ketika i==0. simpan node
pertama tersebut ke dalam head dan cursor. Untuk node-node berikutnya
sambungkan pointer menggunakan variabel cursor.
Source Code
#include <stdio.h>
#include <stdlib.h>
struct Node{
int data;
struct Node *next;
};
int main(){
struct Node *head = NULL;
struct Node *cursor = NULL;
int i;
for ( i=0;i<=5;i++){
struct Node *node = malloc (sizeof(struct Node));
node -> data = i;
node -> next = NULL;
if(i==0){
head = node;
}
else {
//mengarahkan pointer untuk ke node selanjutnya
cursor -> next = node;
}
//cursor baru pindah saat pendeklarasian di bawah
cursor = node;
//printf("%d",cursor -> data);
}
cursor = head;
while (cursor !=NULL){
if (cursor -> data == 2){
struct Node *menyisipkan_angka = malloc (sizeof(struct Node));
menyisipkan_angka -> data = 5;
menyisipkan_angka -> next = NULL;
Output
Analisa
Pada percobaan ini, pembuatan node-nya menggunakan for loop. Untuk
penyisipan node, digunakan while loop dan parameter if else. While akan jalan
jika cursor tidak sama dengan NULL. if berisi deklarasi isi data. if berjalan jika
cursor berada pada data kedua.
#include <stdio.h>
#include <stdlib.h>
struct Node
{
int data;
struct Node *next;
};
int main()
{
struct Node* cursor = NULL;
struct Node* head = NULL;
struct Node* del;
printf("sebelum dihapus\n");
int i;
for ( i=0;i<5;i++){
struct Node* node = (struct Node*) malloc(sizeof(struct Node));
node->data = i+1;
node->next = NULL;
if(i==0)
{
head = node;
cursor = head;
}
else
{
cursor->next = node;
cursor = node;
}
printf("%d", cursor->data);
}
printf("\nsetelah dihapus\n");
del = head;
head = head->next;
free(del);
cursor = head;
while(cursor!=NULL)
{
printf("%d", cursor->data);
cursor = cursor->next;
}
}
Output
Analisa
Pada percobaan ini, program berjalan dengan mengarahkan cursor pada
head, kemudian mendeklarasikan struct node* del. Head akan ditunjuk sebagai
del, dan cursor diarahkan ke head yang baru, sehingga node yang di awal
sebagai head sudah bisa dihapus.
Hapus di tengah
Source Code
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data;
struct Node *next;
};
int main()
{
struct Node* cursor = NULL;
struct Node* head = NULL;
printf("sebelum dihapus\n");
int i;
for ( i=0;i<5;i++){
struct Node* node = (struct Node*) malloc(sizeof(struct Node));
node->data = i+1;
node->next = NULL;
if(i==0)
{
head = node;
cursor = head;
}
else
{
cursor->next = node;
cursor = node;
}
printf("%d", cursor->data);
}
printf("\nsetelah dihapus\n");
cursor = head;
while(cursor!=NULL)
{
if(cursor->data==2)
{
struct Node* del;
del = cursor->next;
cursor->next = del->next;
free(del);
}
printf("%d", cursor->data);
cursor = cursor->next;
}
}
Output
Analisa
Pada percobaan ini, program berjalan dengan mengarahkan cursor pada
head. Dengan menggunakan perulangan while dengan parameter cursor tidak
sama denga NULL, setelah memenuhi parameter tersebut, maka akan terdapat
if dengan parameter data sama dengan 2. Jika keadaan memenuhi parameter
maka program akan mendeklarasikan cursor -> next sebagai del. Kemudian
cursor -> next sebagai del -> next. Setelah itu dilakukan free (del) untuk
menghapus node tersebut. Jika program tidak memenuhi parameter if maka
program akan membaca cursor = -> next dan melakukan looping sampai
program menemukan yang sesuai dengan parameter if
Hapus di belakang
Source Code
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data;
struct Node *next;
};
int main()
{
struct Node* cursor = NULL;
struct Node* head = NULL;
printf("sebelum dihapus\n");
int i;
for ( i=0;i<5;i++){
struct Node* node = (struct Node*) malloc(sizeof(struct Node));
node->data = i+1;
node->next = NULL;
if(i==0)
{
head = node;
}
else
{
cursor->next = node;
}
cursor = node;
printf("%d", cursor->data);
}
printf("\nsetelah dihapus\n");
cursor = head;
while(cursor!=NULL)
{
if(cursor->next->next==NULL)
{
struct Node* del;
del = cursor->next;
cursor->next = NULL;
free(del);
}
printf("%d", cursor->data);
cursor = cursor->next;
}
}
Output
Analisa
Pada percobaan ini, program berjalan dengan mengarahkan cursor pada head.
Dengan menggunakan perulangan while dengan parameter cursor tidak sama
denga NULL, setelah memenuhi parameter tersebut, maka akan terdapat if
dengan parameter cursor->next->next==NULL. Jika keadaan memenuhi
parameter maka program akan mendeklarasikan cursor -> next sebagai del.
Kemudian cursor -> next sebagai del -> next. Setelah itu dilakukan free (del)
untuk menghapus node tersebut. Jika program tidak memenuhi parameter if
maka program akan membaca cursor = -> next dan melakukan looping sampai
program menemukan yang sesuai dengan parameter if
TUGAS
1. Buat linked list dan Tambahkan node 1-100
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data;
struct Node *next;
};
int main()
{
int i;
for ( i=0;i<100;i++){
struct Node* node = (struct Node*) malloc(sizeof(struct Node));
node->data = i+1;
node-> next = NULL;
if(i==0)
{
head = node;
cursor = head;
}
else
{
cursor->next = node;
cursor = node;
}
struct Node
{
int data;
struct Node *next;
};
int main()
{
struct Node* cursor = NULL;
struct Node* head = NULL;
struct Node* del;
printf("sebelum dihapus\n");
int i;
for ( i=0;i<100;i++){
struct Node* node = (struct Node*) malloc(sizeof(struct Node));
node->data = i+1;
node->next = NULL;
if(i==0)
{
head = node;
cursor = head;
}
else
{
cursor->next = node;
cursor = node;
}
del = head;
head = head->next;
free(del);
cursor = head;
while(cursor!=NULL)
{
printf("%d ", cursor->data);
cursor = cursor->next;
}
}
3. Hapus node di akhir
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data;
struct Node *next;
};
int main()
{
struct Node* cursor = NULL;
struct Node* head = NULL;
printf("sebelum dihapus\n");
int i;
for ( i=0;i<100;i++){
struct Node* node = (struct Node*) malloc(sizeof(struct Node));
node->data = i+1;
node->next = NULL;
if(i==0)
{
head = node;
}
else
{
cursor->next = node;
}
cursor = node;
printf("%d ", cursor->data);
}
printf("\nsetelah dihapus\n");
cursor = head;
while(cursor!=NULL)
{
if(cursor->next->next==NULL)
{
struct Node* del;
del = cursor->next;
cursor->next = NULL;
free(del);
}
printf("%d ", cursor->data);
cursor = cursor->next;
}
}
struct Node
{
int data;
struct Node *next;
};
int main()
{
}
struct Node* baru = malloc(sizeof(struct Node));
baru -> data = 101;
baru -> next = head;
head = baru;
cursor = head;
while(cursor!=NULL)
{
if(cursor->data==100)
{
struct Node* node = (struct Node*) malloc(sizeof(struct
Node));
node->data = 105;
node->next = NULL;
node->next = cursor->next;
cursor->next = node;
}
else if(cursor->data==95)
{
struct Node* node = (struct Node*) malloc(sizeof(struct
Node));
node->data = 110;
node->next = NULL;
node->next = cursor->next;
cursor->next = node;
}
printf("%d ", cursor->data);
cursor = cursor->next;
}
ANALISA
Pada percobaan ini, diberikan tugas-tugas seperti yang tertera di atas. Pada
pembuatan node 1 – 100, dilakukan otomatis menggunakan for loop. Looping
dilakukan sebanyak 100 kali, sehingga didapatkan node 1 – 100.
Pada penghapusan node di awal, program berjalan dengan mengarahkan cursor
pada head, kemudian mendeklarasikan struct node* del. Head akan ditunjuk
sebagai del, dan cursor diarahkan ke head yang baru, sehingga node yang di awal
sebagai head sudah bisa dihapus.
Pada penghapusan node di akhir, program berjalan dengan mengarahkan
cursor pada head. Dengan menggunakan perulangan while dengan parameter
cursor tidak sama denga NULL, setelah memenuhi parameter tersebut, maka akan
terdapat if dengan parameter cursor->next->next==NULL. Jika keadaan
memenuhi parameter maka program akan mendeklarasikan cursor -> next sebagai
del. Kemudian cursor -> next sebagai del -> next. Setelah itu dilakukan free (del)
untuk menghapus node tersebut. Jika program tidak memenuhi parameter if maka
program akan membaca cursor = -> next dan melakukan looping sampai program
menemukan yang sesuai dengan parameter if.
Pada penambahan node 101 di awal, dilakukan dengan mendeklarasikan node,
kemudian menginputkan nilai node dan mendeklarasikan node -> next = head
sebagai deklarasi lokasi node yang baru.
Pada penambahan node 105 dan penambahan node 110, digunakan while loop
dan parameter if else. While akan jalan jika cursor tidak sama dengan NULL. if
berisi deklarasi isi data. if berjalan jika cursor berada pada data kedua.