我想创建一个链接列表与头部和尾部节点在C.每个节点需要保存一个int和一个字符串。我的问题是,当我创建一个新节点时,为其分配正确的值,并将其添加到列表的末尾。所有先前的节点都获得我分配最新节点的字符串。 int值保持正确,但它的像char指针被重新分配。我猜测我正在用指针做一些错误的事情,并且在网上查看了大量的例子,并且无法看到我要出错的地方。我包含了我的节点结构和添加功能。感谢所有的帮助!链接列表在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;
}
}
你错了不是指针,而是指针指向什么。您需要了解动态内存分配;我建议拿起一本好书和一杯咖啡。 – 2012-02-29 22:34:13
你的'add'函数看起来不错,所以我想问题是你用相同的第二个参数调用'add'。如果情况并非如此,请提供更多信息:您如何调用您的“添加”功能? – sirgeorge 2012-02-29 22:38:04
Geez,这些天和孩子们在一起,他们需要typedef甚至是简单的,不透明的数据类型? – tbert 2012-03-01 04:53:32