如何使用比较常见的动态数据结构

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

指针和结构

结构可以包含指针,当然也可以是一个指向同一结构其他实例的指针:

例如:

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;

}

摘自:辣妹子社区-C/C++论坛

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有