Anda di halaman 1dari 10

STRUKTUR DATA NIM NAMA KELAS : 10. 01.

093 : Mas Ramadhan Suryadi : TI3D

#include <stdio.h> #include <stdlib.h> #include <string.h>

struct simpul { char nama[25]; int nrp; struct simpul * next; };

struct simpul * ujung = NULL;

void create(); void tampil(); void hapus(); void cari(); void tambahakhir(); void tambahsetelah(); void tambahsebelum(); int nrpcari;

main() { int pil, pktcari, nrpcari; struct simpul * hslcari; 1

char jawab[2];

while(1) { printf("Pilihan : \n"); printf("1. Membuat linked list \n"); printf("2. Menampilkan \n"); printf("3. Mencari \n"); printf("4. Menghapus \n"); printf("5. Menambah di akhir \n"); printf("6. Menambah setelah simpul tertentu \n"); printf("7. Menambah sebelum simpul tertentu \n"); printf("Masukkan pilihan Anda scanf("%d", &pil); : ");

switch(pil) { case 1: create(); break; case 2: tampil(); break; case 3: cari(); break; case 4: hapus(); break; case 5: tambahakhir(); 2

break; case 6: tambahsetelah(); break; case 7: tambahsebelum(); break; } printf("Mau proses lagi (y/t) : "); scanf("%s", &jawab);

if((strcmp(jawab, "Y")==0)||(strcmp(jawab, "y")==0)) { continue; } else if ((strcmp(jawab, "T")==0)||(strcmp(jawab, "t")==0)) { break; } } }

void create() { struct simpul * tampung; int j=0; char jawab[2];

while(1) { ujung=(struct simpul *) malloc(sizeof(struct simpul)); fflush(stdin); 3

printf("Nama printf("NRP

: "); scanf("%s", &ujung->nama); : "); scanf("%d", &ujung->nrp);

if(j==0) { ujung->next=NULL; tampung=ujung; } else { ujung->next=tampung; tampung=ujung; } printf("Ada data lagi (y/t) : "); scanf("%s", &jawab);

if((strcmp(jawab, "Y")==0)||(strcmp(jawab, "y")==0)) { ++j; continue; } else if ((strcmp(jawab, "T")==0)||(strcmp(jawab, "t")==0)) { break; } } }

void tampil() { struct simpul * tampil;

if(ujung==NULL) 4

{ printf("Data Kosong! \n"); } else { tampil=ujung;

while(tampil!=NULL) { printf("%s %d \n", tampil->nama, tampil->nrp); tampil=tampil->next; } } }

struct simpul * cari(int nrpcari) { struct simpul * cr;

cr=ujung;

while(cr->nrp!=nrpcari) { cr=cr->next; } return cr; }

void hapus() { int nrphps; 5

struct simpul * sbl, *hps;

printf("Masukkan nrp data yang dihapus scanf("%d", &nrphps);

: ");

hps=ujung;

while(hps->nrp!=nrphps) { sbl=hps; hps=hps->next; }

if(hps==ujung) { ujung=ujung->next; } else { sbl->next=hps->next; } free(hps); tampil(); }

void cari() { int pil, pktcari, nrpcari; struct simpul * hslcari; struct simpul * cari(int nrpcari); printf("Masukkan nrp data yang dicari : "); 6

scanf("%d", &nrpcari); hslcari=cari(nrpcari); printf("%s %d \n", hslcari->nama, hslcari->nrp); }

void tambahakhir() { struct simpul *baru, *cari;

baru=(struct simpul *) malloc(sizeof(struct simpul)); printf("Masukkan Nama data baru : "); scanf("%s", &baru->nama); : "); scanf("%d", &baru->nrp);

printf("Masukkan NRP data baru

baru->next=NULL;

cari=ujung; while(cari->next!=NULL) { cari=cari->next; } cari->next=baru; tampil(); }

void tambahsetelah() { int nrpcari; struct simpul *stl, *baru;

printf("Tambahkan data baru SETELAH NRP : "); scanf("%d", &nrpcari); stl=cari(nrpcari); 7

baru=(struct simpul *)malloc(sizeof(struct simpul)); printf("Masukkan Nama data baru : "); scanf("%s", &baru->nama); : "); scanf("%d", &baru->nrp);

printf("Masukkan NRP data baru

baru->next=stl->next; stl->next=baru;

tampil(); }

void tambahsebelum() { int nrpcari; struct simpul *stl, *cr, *baru;

printf("Tambahkan data baru SEBELUM NRP : "); scanf("%d", &nrpcari);

baru=(struct simpul *)malloc(sizeof(struct simpul)); fflush(stdin); printf("Masukkan Nama data baru : "); scanf("%s", &baru->nama); : "); scanf("%d", &baru->nrp);

printf("Masukkan NRP data baru

cr=ujung; while(cr->nrp!=nrpcari) { stl=cr; cr=cr->next; }

if(cr==ujung) 8

{ baru->next=cr; ujung=baru; } else { stl->next=baru; baru->next=cr; } tampil(); }

10

Anda mungkin juga menyukai