EDIT *(8:14 PM) - 申し訳ありませんコードを修正し、代わりにこの方法を使用してより簡単に理解できるようにしました。Cでリンクリストの最後に項目をキャスト
リンクリストの最後に追加するときに構造体を正しくキャストする方法がわかりません。このコードをコンパイルすると、最後の行でキャスト警告が表示されます。これは私のコードの残りの部分が正しく機能しない理由です。例えば
: - ノードであることをmalloc関数に
#include <stdlib.h>
typedef struct {
int data;
struct node *next;
} node;
node *HEAD = NULL;
node *addNode(int num)
{
if (HEAD == NULL) {
HEAD = (node *)malloc(sizeof(node));
HEAD->next = NULL;
HEAD->data = num;
}
else {
node *newNode;
newNode = (node *)malloc(sizeof(node));
newNode->data = num;
newNode->next = NULL;
node *iter;
iter = (node *)malloc(sizeof(node));
iter = (node *)HEAD;
while(iter->next != NULL)
iter = (node *)iter->next;
iter->next = newNode; //warning : warning: assignment from incompatible pointer type
}
return HEAD;
}
'wordNode'はどこに定義されていますか? –
また、少なくとも 'iter'のための' malloc() 'メモリのようにメモリリークがあり、それに' HEAD'を割り当てて、 'malloc'だけメモリをリークします。 (そして、上記のコードがあなたの質問と一致しないという事実を無視しています。実際には、リンクされたリストの先頭を作成する以外は、実際にはaynthingを行いません) –
リンクされたリストの末尾にキャスティングが他の場所と異なると思われるのはなぜですか? –