TI

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");
}

1 Jawaban

  • #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");
    }

Pertanyaan Lainnya