ada yang bisa benerin? #include #include #include #include struct node { int info; struct node *next; } typedef struct node NODE; typedef NODE* PTRNODE; PTRNODE
TI
ucil15
Pertanyaan
ada yang bisa benerin?
#include
#include
#include
#include
struct node
{
int info;
struct node *next;
}
typedef struct node NODE;
typedef NODE* PTRNODE;
PTRNODE PtrAwal = NULL, tPtr;
/*menambah node di akhir dari list*/
void InsertLast(PTRNODE *Ptr, int Value)
{
PTRNODE prevPtr = *Ptr, nowPtr = *Ptr, newPtr;
newPtr = malloc(sizeof(NODE));
newPtr->info = Value;
newPtr->next = NULL;
while (nowPtr != NULL)
{
prevPtr = nowPtr;
nowPtr = nowPtr->next;
}
if(prevPtr == NULL)
*Ptr = newPtr;
else
prevPtr->next = newPtr;
}
/*menambah node diawal dari list*/
void InsertFirst(PTRNODE *Ptr, int Value)
{
PTRNODE newPtr;
newPtr = malloc(sizeof(NODE));
newPtr->info = Value;
newPtr->next = *Ptr;
*Ptr = newPtr;
}
/*menyisipkan node sehingga menjadi list terurut*/
void InsertOrder(PTRNODE *Ptr, int Value)
{
PTRNODE prevPtr = *Ptr, nowPtr = *Ptr, newPtr;
newPtr = malloc(sizeof(NODE));
newPtr->info = Value;
newPtr->next = NULL;
while(nowPtr != NULL && Value > nowPtr->info)
{
prevPtr = nowPtr;
nowPtr = nowPtr->next;
}
if (prevPtr == NULL)
{
newPtr->next = *Ptr;
*Ptr = newPtr;
}
else
{
prevPtr->next = newPtr;
newPtr->next = nowPtr;
}
}
/*mencari node yang mempunyai nilai value tertentu*/
PTRNODE Cari(PTRNODE Ptr, int Value)
{
PTRNODE cariPtr = Ptr;
int Ketemu = 0;
while (cariPtr != NULL && Ketemu == 0)
{
if (cariPtr->info == Value)
Ketemu = 1;
else
cariPtr = cariPtr->next;
}
return cariPtr;
}
/*mendapatkan pointer ke node sebelum node yang ditunjuk Ptr*/
PTRNODE PtrSebelum(PTRNODE Head, PTRNODE Ptr)
{
PTRNODE nowPtr = Head, prevPtr = NULL;
while (nowPtr != Ptr)
{
prevPtr = nowPtr;
nowPtr = nowPtr->next;
}
return prevPtr;
}
/*menghapus node yang berisi Value*/
void Delete(PTRNODE *Ptr, int Value)
{
PTRNODE nowPtr, prevPtr, tPtr;
nowPtr = Cari(*Ptr, Value);
if (nowPtr != NULL)
{
prevPtr = PtrSebelum(*Ptr, nowPtr);
if (prevPtr == NULL)
{
tPtr = *Ptr;
*Ptr = (*Ptr)->next;
free(tPtr);
}
else
{
prevPtr->next = nowPtr->next;
free(nowPtr);
}
}
}
/*menyajikan seluruh isi node kelayar*/
void cetak(PTRNODE Ptr)
{
while (Ptr != NULL)
{
printf("%4d ",Ptr->info);
Ptr = Ptr->next;
}
printf("\n");
}
#include
#include
#include
#include
struct node
{
int info;
struct node *next;
}
typedef struct node NODE;
typedef NODE* PTRNODE;
PTRNODE PtrAwal = NULL, tPtr;
/*menambah node di akhir dari list*/
void InsertLast(PTRNODE *Ptr, int Value)
{
PTRNODE prevPtr = *Ptr, nowPtr = *Ptr, newPtr;
newPtr = malloc(sizeof(NODE));
newPtr->info = Value;
newPtr->next = NULL;
while (nowPtr != NULL)
{
prevPtr = nowPtr;
nowPtr = nowPtr->next;
}
if(prevPtr == NULL)
*Ptr = newPtr;
else
prevPtr->next = newPtr;
}
/*menambah node diawal dari list*/
void InsertFirst(PTRNODE *Ptr, int Value)
{
PTRNODE newPtr;
newPtr = malloc(sizeof(NODE));
newPtr->info = Value;
newPtr->next = *Ptr;
*Ptr = newPtr;
}
/*menyisipkan node sehingga menjadi list terurut*/
void InsertOrder(PTRNODE *Ptr, int Value)
{
PTRNODE prevPtr = *Ptr, nowPtr = *Ptr, newPtr;
newPtr = malloc(sizeof(NODE));
newPtr->info = Value;
newPtr->next = NULL;
while(nowPtr != NULL && Value > nowPtr->info)
{
prevPtr = nowPtr;
nowPtr = nowPtr->next;
}
if (prevPtr == NULL)
{
newPtr->next = *Ptr;
*Ptr = newPtr;
}
else
{
prevPtr->next = newPtr;
newPtr->next = nowPtr;
}
}
/*mencari node yang mempunyai nilai value tertentu*/
PTRNODE Cari(PTRNODE Ptr, int Value)
{
PTRNODE cariPtr = Ptr;
int Ketemu = 0;
while (cariPtr != NULL && Ketemu == 0)
{
if (cariPtr->info == Value)
Ketemu = 1;
else
cariPtr = cariPtr->next;
}
return cariPtr;
}
/*mendapatkan pointer ke node sebelum node yang ditunjuk Ptr*/
PTRNODE PtrSebelum(PTRNODE Head, PTRNODE Ptr)
{
PTRNODE nowPtr = Head, prevPtr = NULL;
while (nowPtr != Ptr)
{
prevPtr = nowPtr;
nowPtr = nowPtr->next;
}
return prevPtr;
}
/*menghapus node yang berisi Value*/
void Delete(PTRNODE *Ptr, int Value)
{
PTRNODE nowPtr, prevPtr, tPtr;
nowPtr = Cari(*Ptr, Value);
if (nowPtr != NULL)
{
prevPtr = PtrSebelum(*Ptr, nowPtr);
if (prevPtr == NULL)
{
tPtr = *Ptr;
*Ptr = (*Ptr)->next;
free(tPtr);
}
else
{
prevPtr->next = nowPtr->next;
free(nowPtr);
}
}
}
/*menyajikan seluruh isi node kelayar*/
void cetak(PTRNODE Ptr)
{
while (Ptr != NULL)
{
printf("%4d ",Ptr->info);
Ptr = Ptr->next;
}
printf("\n");
}
1 Jawaban
-
1. Jawaban wilsonrubik123
#include
#include
#include
#include
struct node
{
int info;
struct node *next;
}
typedef struct node NODE;
typedef NODE* PTRNODE;
PTRNODE PtrAwal = NULL, tPtr;
/*menambah node di akhir dari list*/
void InsertLast(PTRNODE *Ptr, int Value)
{
PTRNODE prevPtr = *Ptr, nowPtr = *Ptr, newPtr;
newPtr = malloc(sizeof(NODE));
newPtr->info = Value;
newPtr->next = NULL;
while (nowPtr != NULL)
{
prevPtr = nowPtr;
nowPtr = nowPtr->next;
}
if(prevPtr == NULL)
*Ptr = newPtr;
else
prevPtr->next = newPtr;
}
/*menambah node diawal dari list*/
void InsertFirst(PTRNODE *Ptr, int Value)
{
PTRNODE newPtr;
newPtr = malloc(sizeof(NODE));
newPtr->info = Value;
newPtr->next = *Ptr;
*Ptr = newPtr;
}
/*menyisipkan node sehingga menjadi list terurut*/
void InsertOrder(PTRNODE *Ptr, int Value)
{
PTRNODE prevPtr = *Ptr, nowPtr = *Ptr, newPtr;
newPtr = malloc(sizeof(NODE));
newPtr->info = Value;
newPtr->next = NULL;
while(nowPtr != NULL && Value > nowPtr->info)
{
prevPtr = nowPtr;
nowPtr = nowPtr->next;
}
if (prevPtr == NULL)
{
newPtr->next = *Ptr;
*Ptr = newPtr;
}
else
{
prevPtr->next = newPtr;
newPtr->next = nowPtr;
}
}
/*mencari node yang mempunyai nilai value tertentu*/
PTRNODE Cari(PTRNODE Ptr, int Value)
{
PTRNODE cariPtr = Ptr;
int Ketemu = 0;
while (cariPtr != NULL && Ketemu == 0)
{
if (cariPtr->info == Value)
Ketemu = 1;
else
cariPtr = cariPtr->next;
}
return cariPtr;
}
/*mendapatkan pointer ke node sebelum node yang ditunjuk Ptr*/
PTRNODE PtrSebelum(PTRNODE Head, PTRNODE Ptr)
{
PTRNODE nowPtr = Head, prevPtr = NULL;
while (nowPtr != Ptr)
{
prevPtr = nowPtr;
nowPtr = nowPtr->next;
}
return prevPtr;
}
/*menghapus node yang berisi Value*/
void Delete(PTRNODE *Ptr, int Value)
{
PTRNODE nowPtr, prevPtr, tPtr;
nowPtr = Cari(*Ptr, Value);
if (nowPtr != NULL)
{
prevPtr = PtrSebelum(*Ptr, nowPtr);
if (prevPtr == NULL)
{
tPtr = *Ptr;
*Ptr = (*Ptr)->next;
free(tPtr);
}
else
{
prevPtr->next = nowPtr->*next;
free(nowPtr);
}
}
/*menyajikan seluruh isi node kelayar*/
void cetak(PTRNODE Ptr)
{
while (Ptr != FULL)
{
printf("%4d ",Ptr->info);
Ptr = Ptr->next;
}
printf("\n");
}