C 中的简单 link 列表程序
Simple link list program in C
Link List 在 C 中实现的简单代码。
这是正确的写作方式还是我遗漏了什么?免费区可以吗?
typedef struct box{// data type definition
int data;
struct box* next;
} node; // "node"
node* node1 = (node *)malloc( sizeof(node));// heap memory allocation for node1
if(node1 != NULL){ // ( safety check)
node1->data = 1;//assign value
node1->next = NULL;// doesn't point to anyone
}
node* node2 =(node*)malloc(sizeof(node));// node 2 work
if(node2 != NULL) {
node2 ->data = 2;
node2->next = NULL;
}
node1->next = node2;//first connection
node2->next = NULL;//second connection
for(node *tmp =node1; tmp !=NULL; tmp=tmp->next){// printing value in nodes using *tmp pointer
printf("%i\n",tmp->data );
}
free(node1);//delete node1 allocation on heap
free(node2);//delete node 2 allocation on heap
在此声明中
struct box{// data type definition
int data;
struct box* next;
} node; // "node"
您声明了 struct box
类型的变量 node
,该变量未被进一步使用。
你的意思似乎是像
这样的 typedef 声明
typedef struct box{// data type definition
int data;
struct box* next;
} node; // "node"
因此这些陈述
node* node1 = (node *)malloc( sizeof(node));
node* node2 =(node*)malloc(sizeof(node));
会产生编译错误。
如果您的列表应该包含例如 100 个节点,您会声明 100 个变量 node1 ,..., node100 吗?
您需要编写一个单独的函数来在列表中包含新节点。
这些陈述
node1->next = node2;//first connection
node2->next = NULL;//second connection
如果任一指针等于 NULL,则可以调用未定义的行为。
Link List 在 C 中实现的简单代码。 这是正确的写作方式还是我遗漏了什么?免费区可以吗?
typedef struct box{// data type definition
int data;
struct box* next;
} node; // "node"
node* node1 = (node *)malloc( sizeof(node));// heap memory allocation for node1
if(node1 != NULL){ // ( safety check)
node1->data = 1;//assign value
node1->next = NULL;// doesn't point to anyone
}
node* node2 =(node*)malloc(sizeof(node));// node 2 work
if(node2 != NULL) {
node2 ->data = 2;
node2->next = NULL;
}
node1->next = node2;//first connection
node2->next = NULL;//second connection
for(node *tmp =node1; tmp !=NULL; tmp=tmp->next){// printing value in nodes using *tmp pointer
printf("%i\n",tmp->data );
}
free(node1);//delete node1 allocation on heap
free(node2);//delete node 2 allocation on heap
在此声明中
struct box{// data type definition
int data;
struct box* next;
} node; // "node"
您声明了 struct box
类型的变量 node
,该变量未被进一步使用。
你的意思似乎是像
这样的 typedef 声明typedef struct box{// data type definition
int data;
struct box* next;
} node; // "node"
因此这些陈述
node* node1 = (node *)malloc( sizeof(node));
node* node2 =(node*)malloc(sizeof(node));
会产生编译错误。
如果您的列表应该包含例如 100 个节点,您会声明 100 个变量 node1 ,..., node100 吗?
您需要编写一个单独的函数来在列表中包含新节点。
这些陈述
node1->next = node2;//first connection
node2->next = NULL;//second connection
如果任一指针等于 NULL,则可以调用未定义的行为。