gpt4 book ai didi

在 C 中将项目强制转换到链表末尾

转载 作者:行者123 更新时间:2023-11-30 15:59:19 25 4
gpt4 key购买 nike

编辑*(8:14 PM) - 抱歉,我更正了我的代码,并将其改为一种方法,以便更容易理解。

我不确定在添加到链表末尾时如何正确转换结构。编译这段代码在最后一行给了我一个强制转换警告。这可能是我的其余代码无法正常运行的原因。

例如:

#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;
}

最佳答案

  • 确保包含 stdlib.h - 使用 malloc 需要
  • 将所有出现的 wordNode 修复为节点 - wordNode 在程序中未定义
  • 创建一个结构体和 typedef 都命名为节点——自引用结构体的标准技巧

然后所有警告都会消失;

#include <stdlib.h>
struct node{
int data;
struct node *next;
};
typedef struct node node;


node *HEAD = NULL;

int main(int argc, char*argv[]) {

int x = 1;
int y = 2;

if(HEAD == NULL)
{
HEAD = (node *)malloc(sizeof(node));
HEAD->next = NULL;
HEAD->data = x;
}
else
{
node *newNode;
newNode = (node *)malloc(sizeof(node));
newNode->data = y;
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 0;
}
}

关于在 C 中将项目强制转换到链表末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9057779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com