我正在尝试在C语言中创建一个带有头节点和尾节点的链表。每个节点需要保存一个整数和一个字符串。我的问题是,当我创建一个新节点,为其分配正确的值并将其添加到列表末尾时,所有先前的节点都会获得我为最新节点分配的字符串。整数值保持正确,但好像它们的字符指针被重新分配了。我猜测我在指针方面做错了什么,并查看了许多在线示例,但找不出错误所在。我包含了我的节点结构和添加函数。感谢您的所有帮助!
// Linked list (queue) for requests
typedef struct request {
struct request *next;
int request_id;
char *command;
} request_t;
// Global variables
request_t *head = NULL;
request_t *tail = NULL;
void add(int r_id, char *c) {
request_t *node = NULL;
node = (request_t *)malloc(sizeof(request_t));
node->request_id = r_id;
node->command = c;
node->next = NULL;
if(head == NULL) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
add
函数看起来没问题,所以我猜问题在于你正在使用相同的第二个参数调用add
。如果不是这种情况,请提供更多信息:你是如何调用你的add
函数的? - sirgeorge