• Tidak ada hasil yang ditemukan

Think Different Tugs senin ASD: Code Linked List code linked list

N/A
N/A
Protected

Academic year: 2017

Membagikan "Think Different Tugs senin ASD: Code Linked List code linked list"

Copied!
4
0
0

Teks penuh

(1)

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

//========================================================

struct node { int data;

struct node *next; };

typedef struct node node;

node *createNode(void);

void tambahAwal(node **head); void tambahData(node **head); void tranverse(node *head);

void insertNode(node **head, node *pPre, node *pNew); void deleteNode(node **head, node *pPre, node *pCur); void hapusData(node **head);

void deleteList(node *head);

//========================================================

void main() {

node *head; char pilih;

head = NULL; do{

clrscr();

printf("masukkan pilihan\n");

printf("1. tambah data di awal\n");

printf("2. tambah data di tengah list\n"); printf("3. hapus data\n");

printf("4. cetak isi list\n");

printf("MASUKKAN PILIHAN (tekan q untuk keluar) : "); fflush(stdin);

scanf("%c", &pilih); if (pilih == '1')

tambahAwal(&head); else if (pilih == '2')

tambahData(&head); else if (pilih == '3')

hapusData(&head); else if (pilih == '4'){ tranverse(head); getch();

}

} while (pilih != 'q'); deleteList(head);

}

//========================================================

(2)

ptr = (node *)malloc(sizeof(node)); return(ptr);

}

//========================================================

void tambahAwal(node **head){ int bil;

node *pTemp;

clrscr(); fflush(stdin);

printf("masukkan bilangan integer : "); fflush(stdin);

scanf("%d", &bil);

pTemp = (node *)malloc(sizeof(node));

if (pTemp != NULL){

pTemp->data = bil; pTemp->next = NULL;

insertNode(head, NULL, pTemp); }

else{

printf("Alokasi memori gagal"); getch();

} }

//========================================================

void tambahData(node **head){ int pos, bil;

node *pTemp, *pCur;

clrscr();

tranverse(*head);

printf("\nposisi penyisipan setelah data bernilai : "); fflush(stdin);

scanf("%d", &pos);

printf("\nData yang disisipkan : "); fflush(stdin);

scanf("%d", &bil);

pCur = *head;

while (pCur != NULL && pCur -> data != pos) { pCur = pCur -> next;

}

pTemp = (node *)malloc(sizeof(node));

if (pCur == NULL){

printf("\nnode tidak ditemukan"); getch();

}

else if (pTemp == NULL){

printf("\nalokasi memeori gagal"); getch();

(3)

else{

pTemp->data = bil; pTemp->next = NULL;

insertNode(head, pCur, pTemp); }

}

//========================================================

void tranverse(node *head){ //traverse a linked list

node *pWalker;

clrscr();

pWalker = head;

while (pWalker != NULL){

printf("%d->", pWalker -> data); pWalker = pWalker -> next;

}

printf("NULL"); }

//========================================================

void insertNode(node **head, node *pPre, node *pNew){ if (pPre == NULL){

//add before first logical node or to an empty list pNew -> next = *head;

*head = pNew; }

else {

//add in the middle or at the end pNew -> next = pPre -> next; pPre -> next = pNew;

} }

//========================================================

void deleteNode(node **head, node *pPre, node *pCur) {

if (pPre == NULL)

*head = pCur -> next; else

pPre -> next = pCur -> next; free(pCur);

}

//========================================================

void hapusData(node **head) {

int pos;

node *pCur, *pPre;

clrscr();

tranverse(*head);

(4)

fflush(stdin); scanf("%d", &pos);

pPre = NULL; pCur = *head;

//search until the target value is found or the end of the list is reached

while (pCur != NULL && pCur -> data != pos) { pPre = pCur;

pCur = pCur -> next; }

if (pCur == NULL){

printf("\nnode tidak ditemukan"); getch();

} else

deleteNode(head, pPre, pCur); }

//========================================================

void deleteList(node *head){ node *pTemp;

while(head != NULL){ pTemp = head; head = head->next; free(pTemp);

Referensi

Dokumen terkait

Umumnya dipakai untuk menyimpan object data yang terstruktur, misal: data mahasiswa, karyawan, buku, barang, dsb... Array

Buatlah struct untuk data lagu yang berisi tentang judul lagu, penyanyi, tahun produksi, nomor track dan kode album.. Buatlah program lengkap untuk memasukkan dan menampilkan

• Queue merupakan linear list di mana data dimasukkan melalui sebuah ujung yang.. disebut end/rear dan dihapus dari ujung lain yang

MARDHATILLAH

• Sebuah kondisi dimana di dalam sebuah struct terdapat tipe data berupa struct

Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih besar. Jika data sama,

termasuk operasi yang dapat dilakukan pada data

node yang didelete memiliki 1 anak berwarna merah maka ganti warna anak tersebut menjadi hitam. • Jika proses delete tersebut