指针和结构
结构可以包含指针,当然也可以是一个指向同一结构其他实例的指针:
例如:
struct node
{
struct node *next_ptr;
int value;
}
仔细思考一下,现在我们发现,如果我们可以动态创建 node ,那我们在内存中可以保存的数据就可以达到无限大。所以我们需要的是一个这样的程序,当用户说“我想要一个新节点”时,程序就可以创建它。当然不能用光内存。
因此我们可以创建如下程序:
#include <stdio.h>
struct node
{
struct node *next_ptr;
int value;
};
struct node *first_ptr;
void add_list(int item)
{
struct node *new_item_ptr = malloc(sizeof(struct node));
(*new_item_ptr).value = item;
(*new_item_ptr).next_ptr = first_ptr;
first_ptr = new_item_ptr;
}
int main()
{
int j = 0;
int i = j;
struct node *current_ptr;
scanf("%d", &i);
for(; j<=i; j++) add_list(j);
current_ptr = first_ptr;
while(current_ptr != NULL)
{
printf("%d\n", (*current_ptr).value);
first_ptr = (*first_ptr).next_ptr;
free(current_ptr);
current_ptr = NULL;
current_ptr = first_ptr;
}
current_ptr = first_ptr;
return 0;
}