C 合并链表

C 合并链表,c,C,我正在尝试创建一个链接列表,该列表连接到其他列表。主列表将有索引号,子列表将携带数据 我已尝试将新节点连接到主链接列表的节点,但我不确定我所做的是否正确。我在编译过程中遇到以下错误:- 34:40:警告:来自不兼容指针类型的赋值[-Wincompatible指针类型] temp1->chain = temp2; ^ t

我正在尝试创建一个链接列表,该列表连接到其他列表。主列表将有索引号,子列表将携带数据

我已尝试将新节点连接到主链接列表的节点,但我不确定我所做的是否正确。我在编译过程中遇到以下错误:-

34:40:警告:来自不兼容指针类型的赋值[-Wincompatible指针类型]

                      temp1->chain = temp2;
                                    ^
                            tempT2 = temp1;
                                    ^
39:40:警告:来自不兼容指针类型的分配[-Wincompatible指针类型]

                      temp1->chain = temp2;
                                    ^
                            tempT2 = temp1;
                                    ^
我想知道我是否在程序中犯了错误,或者是否有更好的方法来做我想做的事情

有没有办法进行类型转换并删除不兼容的指针类型错误


在第一个警告中,temp1->chain=temp2;,chain是struct node1类型的指针,您正在尝试分配temp2,它是struct node2类型的指针。它们不兼容。 维切维萨在第二次警告中。
当分配给不同的数据类型时,需要显式类型转换。但是,在这种情况下,不建议这样做,因为可能会截断数据。

我不确定我是否完全理解您的意图。您应该将其视为错误的警告是因为您将struct node1指针分配给struct node2指针,反之亦然

我猜那条链子的型号不对。将其更改为:

struct node1* chain; --> struct node2* chain;
                                    ^
                                    note
*count++; --> (*count)++;
除此之外,这一行:

*count++;
没有做你期望的事情-改变它,就像:

struct node1* chain; --> struct node2* chain;
                                    ^
                                    note
*count++; --> (*count)++;
在这里:

while(tempT1->link1 != NULL);
                            ^
                            Sure you want this ; ?
                            It looks wrong... 
                            I guess you need to delete the ;

很好,你注意到了警告。它们清楚地表明确实存在错误。您有两种不同的节点类型-这些错误是因为您正在将一种类型的指针分配给另一种类型的指针。请注意,chain是一个结构节点1指针,而temp2是一个结构节点2指针,因此您将一种指针类型分配给另一种指针类型。那是不可能的。。。对于TENT2=temp1,情况正好相反。@Aru Viser所介绍的程序没有任何意义: