[coding] Linked List (TAS ASD-PRAKTEK)

Sebelumnya ane mohon maaf bagi teman2. Cz udah janji mo langsung upload tetapi bru di upload sekarang... jadi langsung aja y gan... ke TKP (codingan ane)


#include 
#include 
#include 
#include 

typedef struct tdata *pdata;

struct barang{
    char Namabarang[50];
    int JumlahBarang;
    int harga;
}

typedef struct tdata
{
    struct barang b;
    pdata next;
}


pdata awal,akhir;

void tambah_awal(pdata *awal, pdata *akhir, struct barang databaru)
{
    pdata baru;
    baru=(pdata)malloc(sizeof(tdata));
    if (baru!=NULL)
    {
        baru->b=databaru;
        baru->next=NULL;
        if(*awal==NULL)
        {
            *awal=baru;
            *akhir=baru;
        }
        else
        {
            baru->next=*awal;
            *awal=baru;
        }
    }
    else printf("Memori Penuh. Tidak Bisa Tambah Elemen.\n");
}

void tambah_akhir(pdata *awal, pdata *akhir, struct barang databaru)
{
    pdata baru;
    baru=(pdata)malloc(sizeof(tdata));
    if (baru!=NULL)
    {
        baru->b=databaru;
        baru->next=NULL;
        if(*awal==NULL)
        {
            *awal=baru;
            *akhir=baru;
        }
        else
        {
            (*akhir)->next=baru;
            *akhir=baru;
        }
    }
    else printf("Memori Penuh. Tidak Bisa Tambah Elemen.\n");
}

void view(pdata awal)
{
    int total = 0; int kali = 0;
    pdata p;
    if (awal!=NULL)
    {
        p=awal;
        while(p!=NULL)
        {
            printf("\n\nNama : %s\n",p->b.Namabarang);
            printf("Jumlah :%i\n",p->b.JumlahBarang);
            printf("harga :%i\n",p->b.harga);
            kali = p->b.harga * p->b.JumlahBarang;
            total = total + kali;

            p=p->next;
        }

        printf("\n\nTotal biaya : %i",total);
        printf("\n");
    }

    else printf("Data Kosong. Tidak ada data dalam linked list.\n");
}

void main()
{
    int i,n;
    barang b[50];
    printf("Berapa Jenis barang yang dibeli ? ");
    scanf("%d",&n);
    for (i=1;i<=n;i++)
    {
        fflush(stdin);
        printf("\n\nInput data ke-%d : ",i);
        printf("\nNama barang : ");
        gets(b[i].Namabarang);

        printf("Jumlah barang : ");
        scanf("%d",&b[i].JumlahBarang);

        printf("Harga barang : ");
        scanf("%d",&b[i].harga);
    }

    for (i=1;i<=n;i++){
        if ((b[i].harga>=1000) && (b[i].JumlahBarang>=5))
        {
            tambah_awal(&awal,&akhir,b[i]);
        }
        else{
            tambah_akhir(&awal,&akhir,b[i]);
        }
    }

    view(awal);
}

ingat harus tes, n terus belajar
Enjoy it
 
 
...