链表和 C 上的结构



我正在尝试使用链表制作库存程序,但是当我想显示我输入的数据列表时遇到问题。这是输入数据的代码:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct t_barang
{
   char kode[9];
   char nama[30];
   int  harga;
   int  stok;
};
struct l_barang
{
   struct t_barang item;
   struct l_barang *next;
};
int main(){
    typedef struct l_barang *p_barang;
    struct l_barang *head;
    head=NULL;
    int jumlah=0;
    do{
        printf("Input Jumlah barang = ");
        scanf("%d", &jumlah);
        if(jumlah == 0)
            break;
        else{
            struct l_barang *baru = (struct l_barang*) malloc(sizeof(struct l_barang));
            printf("Input Kode barang = ");
            scanf("%s", &(baru->item).kode);
            printf("Input nama barang = ");
            scanf("%s", &(baru->item).nama);
            printf("Input harga barang = ");
            scanf("%d", &(baru->item).harga);
            baru->item.stok=jumlah;
            if(head == NULL){
                baru->next=NULL;
                    head=baru;}
            else{
                struct l_barang *tail;
                    tail=head;
                        while(tail->next != NULL){
                tail->next=NULL;
                tail = baru;
                }
            }
        }
    }
    while(jumlah != 0);

这是我用来显示数据的代码:

p_barang tampil = head;
    while(tampil){
        printf("%dt%st%st%dn",tampil->item.stok, tampil->item.kode, tampil->item.nama, tampil->item.harga);
    tampil=tampil->next;}

谢谢!

问题可能来自这里:

            tail=head;
            while(tail->next != NULL){
              tail->next=NULL;
              tail = baru;
            }

如果tail->next不是 NULL,请将其设置为 NULL,然后更改tail:这将触发内存泄漏和其他问题...

通常的方法是:

            tail=head;
            while(tail->next != NULL){
              tail=tail->next;
            }
            //tail is now the end of the list
            tail->next = baru;
            baru->next=NULL;
            //now, baru is the end of the list

相关内容

  • 没有找到相关文章

最新更新