C 链表节点创建
根节点永远不会返回给调用方。您需要接受根节点的节点作为指针,因此节点**能够在其原始位置分配根,或者返回新分配的当前节点 然后, 给出了更新代码;以上内容仍然适用,但您主要的演示示例需要修改。节点**选项会更好 推送功能有两个问题;接受节点**,并在创建时设置根节点;以及在已经创建根时正确插入新节点C 链表节点创建,c,linked-list,C,Linked List,根节点永远不会返回给调用方。您需要接受根节点的节点作为指针,因此节点**能够在其原始位置分配根,或者返回新分配的当前节点 然后, 给出了更新代码;以上内容仍然适用,但您主要的演示示例需要修改。节点**选项会更好 推送功能有两个问题;接受节点**,并在创建时设置根节点;以及在已经创建根时正确插入新节点 node_t * push (node_t *root, int value) { node_t* current = root; /*...*/ return curren
node_t * push (node_t *root, int value) {
node_t* current = root;
/*...*/
return current;
}
全面上市
// accept the root as node_t**
void push (node_t **root, int value) {
node_t* current = *root; // get the root node
if (current == NULL) {
current = (node_t*)malloc(sizeof(node_t));
current->value = value;
current->next = NULL;
*root = current; // set the root node
}
else {
while (current->next != NULL) {
current = current->next;
}
// create the new node in the place of the "next" node
current->next = (node_t*)malloc(sizeof(node_t));
current->next->value = value;
current->next->next = NULL;
}
}
注;这是使用-std=c11语言级兼容性编译的。Debugger………..请阅读。告诉我们什么不起作用。你能将你的结构定义添加到你的代码中吗?或者最好将根作为一个节点\u t*根作为一个全局变量。双指针有时会让我大吃一惊,谢谢
void push (node_t *root, int value)
node_t * push (node_t *root, int value)
node_t * push (node_t *root, int value) {
node_t* current = root;
/*...*/
return current;
}
// accept the root as node_t**
void push (node_t **root, int value) {
node_t* current = *root; // get the root node
if (current == NULL) {
current = (node_t*)malloc(sizeof(node_t));
current->value = value;
current->next = NULL;
*root = current; // set the root node
}
else {
while (current->next != NULL) {
current = current->next;
}
// create the new node in the place of the "next" node
current->next = (node_t*)malloc(sizeof(node_t));
current->next->value = value;
current->next->next = NULL;
}
}
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int value;
struct node* next;
} node_t;
void push (node_t **root, int value) {
node_t* current = *root;
if (current == NULL) {
current = (node_t*)malloc(sizeof(node_t));
current->value = value;
current->next = NULL;
*root = current;
}
else {
while (current->next != NULL) {
current = current->next;
}
current->next = (node_t*)malloc(sizeof(node_t));
current->next->value = value;
current->next->next = NULL;
}
}
void print (node_t* root) {
node_t* current = root;
while(current != NULL) {
printf("%d ", current->value);
current = current->next;
}
}
int main(void) {
node_t* root = NULL;
push(&root, 5); // note the additional &
push(&root, 10);
push(&root, 15);
print(root);
return 0;
}