0% found this document useful (0 votes)
144 views6 pages

Linked List Insertion Guide

The document describes a C program for inserting nodes into a single linked list. It defines a Node struct with data, name, value, and next pointer fields. It includes functions for inserting nodes at the beginning, end, after, and before a given node. The main function runs a menu loop calling these insert functions as well as a display function to output the list. The second part adds name and value fields to the Node struct to demonstrate inserting structured data into the linked list.

Uploaded by

Oktavia Citra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
144 views6 pages

Linked List Insertion Guide

The document describes a C program for inserting nodes into a single linked list. It defines a Node struct with data, name, value, and next pointer fields. It includes functions for inserting nodes at the beginning, end, after, and before a given node. The main function runs a menu loop calling these insert functions as well as a display function to output the list. The second part adds name and value fields to the Node struct to demonstrate inserting structured data into the linked list.

Uploaded by

Oktavia Citra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

BAB I

SINGLE LINKED LIST : INSERT

1. Menu SLL Insert Int


a. Listing program
#include <stdio.h>
#include <stdlib.h>
void info_program();
void menu();
typedef struct simpul Node;
struct simpul{
int data;
Node *next;
};
Node *head=NULL, *p;
void insert_akhir();
void insert_awal();
void insert_after();
void insert_before();
void alokasi();
void tampil();

int main()
{
puts("\tPROGRAM SINGLE LINKED LIST INSERT");
puts("\t=================================\n");
do{
info_program();
fflush(stdin);
menu();
puts("");
}while(1);

return 0;
}
void menu()
{
int pilihan;

printf("Masukkan pilihan menu anda\t: ");


scanf("%d", &pilihan);

if(pilihan==1 || pilihan==2)
alokasi();

if(pilihan==1)
insert_awal();
else if(pilihan==2)
insert_akhir();
else if(pilihan==3)
insert_after();
else if(pilihan==4)
insert_before();
else if(pilihan==5)
tampil();
else
exit(0);
}
void info_program()
{
puts("Pilihan menu :");
puts("1. Insert Awal");
puts("2. Insert Akhir");
puts("3. Insert After");
puts("4. Insert Before");
puts("5. Tampil");
puts("6. Keluar");
}
void alokasi()
{
int nilai;

p=(Node *) malloc(sizeof(Node));
if(p==NULL)
exit(0);

printf("Masukkan angka yang disimpan\t: ");


scanf("%d", &nilai);

p->data = nilai;
p->next = NULL;
}
void tampil()
{
Node *baca;

baca = head;

while(baca != NULL)
{
printf("%d ", baca->data);
baca = baca ->next;
}
puts("");
}
void insert_awal()
{
if(head==NULL)
head = p;
else{
p->next = head;
head=p;
}
}
void insert_akhir()
{
Node *tail;

tail=head;
if(head==NULL){
head = p;
}else{
while(tail->next!=NULL){
tail=tail->next;
}
tail->next = p;
tail = p;
}
}
void insert_after()
{
Node *after;
int x, kondisi=0;

printf("Setelah angka berapa disisipkan? ");


scanf("%d", &x);
alokasi(); //tidak perlu menjabarkan p=(Node *)malloc.... bla bla
//karena nantinya membuat duplikasi kode, jadi panggil saja
fungsi alokasi()
after = head;
while(after->data != x){
if(after->next == NULL){
printf(" Maaf, angka %d tidak ada!\n", x);
kondisi=1; //jika hanya ada break dan tidak ada
kondisi=1,
break; //maka alokasi() pada fungsi ini akan tetap
dimasukkan ke fungsi tampil()
}else
after = after->next;
}
if(kondisi==0){
p->next = after->next;
after->next = p;
}
}
void insert_before()
{
Node *bef, *pbef;
int x, kondisi=0;;

printf("Sebelum angka berapa disisipkan? ");


scanf("%d", &x);
alokasi();

bef = head;
if(bef->data == x)
insert_awal();
else{
while(bef->data != x){
if(bef->next == NULL){
printf(" Maaf angka %d tidak ada!\n", x);
kondisi=1;
break;
}else{
pbef = bef;
bef = bef->next;
}
}
if(kondisi==0){
p->next = bef;
pbef->next = p;
}
}
}
b. Capture
2. Menu SLL Insert Struct
a. Listing program
#include <stdio.h>
#include <stdlib.h>
#define MAX 5
void info_program();
void menu();
typedef struct simpul Node;
struct simpul{
int data;
char name[MAX];
float value;
Node *next;
};
Node *head=NULL, *p;
void insert_akhir();
void insert_awal();
void insert_after();
void insert_before();
void alokasi();
void tampil();

int main()
{
puts("\tPROGRAM SINGLE LINKED LIST INSERT");
puts("\t\t DATA STRUCT");
puts("\t=================================\n");
do{
info_program();
fflush(stdin);
menu();
puts("");
}while(1);

return 0;
}
void menu()
{
int pilihan;

printf("Masukkan pilihan menu anda : ");


scanf("%d", &pilihan);

if(pilihan==1 || pilihan==2)
alokasi();

if(pilihan==1)
insert_awal();
else if(pilihan==2)
insert_akhir();
else if(pilihan==3)
insert_after();
else if(pilihan==4)
insert_before();
else if(pilihan==5)
tampil();
else
exit(0);
}
void info_program()
{
puts("Pilihan menu :");
puts("1. Insert Awal");
puts("2. Insert Akhir");
puts("3. Insert After");
puts("4. Insert Before");
puts("5. Tampil");
puts("6. Keluar");
}
void alokasi()
{
p=(Node *) malloc(sizeof(Node));

if(p==NULL)
exit(0);

printf("Masukkan nomor\t: ");


scanf("%d", &p->data);
fflush(stdin);
printf("Masukkan nama\t: ");
gets(p->name);
fflush(stdin);
printf("Masukkan nilai\t: ");
scanf("%f", &p->value);

p->next = NULL;
}
void tampil()
{
Node *baca;

baca = head;

printf("=========================\n");
printf("No.\t Nama\t Nilai\t\n");
printf("=========================\n");
while(baca != NULL)
{
printf("%d\t %s\t %0.1f\n", baca->data, baca->name, baca-
>value);
baca = baca->next;
}
printf("=========================\n");
}
void insert_awal()
{
if(head==NULL)
head = p;
else{
p->next = head;
head=p;
}
}
void insert_akhir()
{
Node *tail;

tail=head;
if(head==NULL){
head = p;
}else{
while(tail->next!=NULL)
tail=tail->next;
tail->next = p;
tail = p;
}
}
void insert_after()
{
Node *after;
int x, kondisi=0;

printf("Setelah angka berapa disisipkan? ");


scanf("%d", &x);
alokasi();
after = head;
while(after->data != x){
if(after->next == NULL){
printf(" Maaf nomor %d tidak ada!\n", x);
kondisi=1;
break;
}else{
after = after->next;
}
}
if(kondisi==0){
p->next = after->next;
after->next = p;
}
}
void insert_before()
{
Node *bef, *pbef;
int x, kondisi=0;

printf("Sebelum angka berapa disisipkan? ");


scanf("%d", &x);
alokasi();
bef = head;
if(bef->data==x)
insert_awal();
else{
while(bef->data != x){
if(bef->next == NULL){
printf(" Maaf nomor %d tidak ada!\n", x);
kondisi=1;
break;
}else{
pbef = bef;
bef = bef->next;
}
}
if(kondisi==0){
p->next = bef;
pbef->next = p;
}
}
}

b. Capture

You might also like