c -在链表中插入元素



我正在为C考试工作,同时试图将元素插入链表,我遇到了运行时问题。我唯一的目的是添加4个元素到列表,然后打印列表。然而,它给出了一个错误。我已经看了一些插入代码,我的代码似乎是正确的。看不到错误。如有任何帮助,不胜感激。

#include <stdio.h>
#include <stdlib.h>
struct ders{
    char kod;
    struct ders *next;
}*header;
typedef struct ders Ders;
void add(Ders*,Ders*);
void print(Ders*);
int main(void)
{
header = NULL;
Ders *node = NULL;
int i = 0;
char c;
while(i<4)
{
    scanf("%c",&c);
    node = (Ders*)malloc(sizeof(Ders));
    node->kod = c;
    node->next = NULL;
    add(header,node );
    i++;

}
print(header);
return 0;
}
void add(Ders *header, Ders *node)
{
    if(header == NULL){
        header = node;
        header->next = NULL; }
    else{
        node->next = header;
        header = node;
    }
}
void print(Ders *header)
{
Ders *gecici = header;
while(gecici != NULL){
    printf("%cn",gecici->kod);
    gecici = gecici->next;
}
}

正如nihirus所说:指针是按值传递的。因此,你可以改变它所指向的内存,但你不能改变实际的指针,即使它指向别的东西。"

你的修改导致错误*header is not member of struct因为->优先级高于*

尝试使用(*header)->next = NULL相反。

C操作符优先级:http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm

相关内容

  • 没有找到相关文章

最新更新