注册 登录
编程论坛 C语言论坛

单链表问题

FORTHGOER 发布于 2021-03-11 15:00, 1744 次点击
程序代码:
//define struct type
typedef struct Lnode {

    int data;
    struct LNode* next;
   
}Lnode;

//creat Link list
void CreatList() {

    //creat Head pointer and Tail pointer
    Lnode** Head;
    Lnode* Tail;

    //creat an empyt Link list
    *Head = (Lnode* )malloc(sizeof(Lnode));
    (*Head)->next = NULL;
   
    Tail = *Head;

    //insert data
    for (int i = 0; i < 3; ++i) {
        
        //creat new node
        Lnode* P = (Lnode* )malloc(sizeof(Lnode));
        
        //update date domain and pointer domain of new node
        P->data = i;
        P->next = NULL;

        //update pointer domain of before node
        Tail->next = P;

        //update Tail pointer Location
        Tail = P;

    }

}  




gcc 9.2.0 报错
.\Link.c: In function 'CreatList':
.\Link.c:45:20: warning: assignment to 'struct LNode *' from incompatible pointer type 'Lnode *' {aka 'struct Lnode *'} [-Wincompatible-pointer-types]
   45 |         Tail->next = P;
      |                    ^


我觉得没错啊 Tail->next 与 P 都是 Lnode* 类型啊
3 回复
#2
FORTHGOER2021-03-11 16:01
回复 楼主 FORTHGOER
line5: struct LNode* next -> struct Lnode* next
#3
slbos2021-03-23 09:12
额,Head是二级指针也是野指针吧,为什么可以把它指向的地址赋值呢?
*Head = (Lnode* )malloc(sizeof(Lnode));
#4
slbos2021-04-10 11:46
//define struct type
typedef struct Lnode {

    int data;
    struct Lnode *next;
   
}Lnode;

typedef struct head{
    Lnode *Head;
    lnode *Tail;
}head;

//creat Link list
void CreatList() {

    //creat Head pointer and Tail pointer
    head h;
    h -> Head = NULL;
    h -> Tail = NULL;

    //insert data
    for (int i = 0; i < 3; ++i) {
        
        //creat new node
        Lnode* P = (Lnode* )malloc(sizeof(Lnode));
        
        //update date domain and pointer domain of new node
        P->data = i;
        P->next = NULL;

        //update pointer domain of before node
        h -> Tail->next = P;

        //update Tail pointer Location
        h -> Tail = P;

    }

}  
1