Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C语言中显示链表_C_Linked List - Fatal编程技术网

如何在C语言中显示链表

如何在C语言中显示链表,c,linked-list,C,Linked List,我是c语言链表的初学者。首先,为了理解这个概念,我尝试制作一个简单的链表。 代码如下: #include <stdlib.h> #include <stdio.h> typedef struct Element ELEMENT; struct Element { float price; int nb_products; ELEMENT *next=NULL; }; ELEMENT* add_list ( ELEMENT * p_head)

我是c语言链表的初学者。首先,为了理解这个概念,我尝试制作一个简单的链表。 代码如下:

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


typedef struct Element ELEMENT;
struct Element
{
    float price;
    int nb_products;
    ELEMENT *next=NULL;
};

ELEMENT* add_list ( ELEMENT * p_head)
{

    ELEMENT* my_new=NULL;

    if (!( my_new = (ELEMENT*) malloc (sizeof(ELEMENT))))
    {
        printf ("Pb d'allocation dans %s\n",__func__);
        exit (EXIT_FAILURE);
    }
    my_new->next = p_head;
    return my_new;
}

void liste_display(ELEMENT *p_head)
{
    while(p_head != NULL)
    {
        printf("%d",p_head->nb_products);
        p_head = p_head->next;
    }
}
int main()
{
    ELEMENT *head = NULL;
    ELEMENT *elem;

    elem = add_list(head);

    elem->nb_products = 34;
    elem->price       = 10.95;

    liste_display ( head );

    return 0;
}
我可以在元素列表中创建一个新元素,但我不知道如何在代码中显示它,因为只有一个元素要显示

正如你所看到的,我有一个错误EXC_BAD_ACCESS,所以我想我不知道如何操作链表

在我的项目后面,我将需要,如果有可能使链表的链表像一种二维数组,但在列表中,我没有找到如何使这一点。例如,如果我的元素列表中的一个元素必须有另一种结构的列表,我应该在元素结构中声明一个*头指针吗

提前谢谢

编辑:

while(p_tete != NULL){
     printf("%d",p_tete->produit_nb);
     p_tete = p_tete->suivant;
}

由于链表是一种数据结构,其中的元素一个接一个地链接在一起,因此为了打印整个列表,必须遍历整个列表并逐个打印元素,直到到达空指针

应该是

while(head!=NULL)
{
    printf("%d",head->data);
    head=head->next;
}
尝试使用临时元素变量并将p_头指定给temp


在大多数语言中,列表在[]或{}内一次显示一个元素,并用逗号分隔。要做到这一点,你需要一次遍历一个节点。旁注:我强烈建议你用英语编写代码,特别是如果你需要从StackOverflow或其他法语不流利的人那里获得帮助的话。这将帮助我们更容易地理解您的代码,从而更快地发现任何问题。您应该将代码作为文本发布在此处,而不是作为屏幕截图的链接。请不要尝试即时翻译代码。慢慢来,确保发布的程序编译并产生原始程序所产生的错误。这不会显示最后一个元素。是的,它必须是while ptete或while ptete!=无效的
        void liste_display(ELEMENT **p_head)
        { 
            temp = (ELEMENT*) malloc (sizeof(ELEMENT));
            temp = *p_head;
            while(temp != NULL) 
            { 
                 printf("%d",temp->nb_products); 
                 temp= temp->next;
             }
         }