关于建立动态链表

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:37:22
各位大侠能否给我解释下 动态链表的 运作流程(原理)。
我看书看得好晕~
希望能否最通俗的表达方法表达出来~
PS malloc calloc free函数该如何使用

先谢谢各位回答的朋友了

动态链表就是在需要时才开辟结点的存储空间的那种链表。就好比火车那样,静态链表就是只有10节车厢,装不下不管,动态链表就是车厢不够我再加,大家都有坐就好。

malloc:
该函数如果成功调用,可以在内存中开辟size指定大小的连续空间。返回值类型为void,请注意这不是表示没有返回值,而是表示返回值可以指向任何类型。该函数是一个返回指针值的函数,如果成功调用,返回所开辟空间的首地址,如果失败返回NULL。该函数的参数可以用unsigned int size定义空间大小,也可以用变量类型名作参数来定义空间大小。

如:malloc(sizeof(int));开辟2个字节的存储空间,molloc(sizeof(struct student));开辟10个(4+4+2)字节。该函数返回值是void类型,因此调用时需要强制转换成需要的类型。

如:(int *)malloc(sizeof(int));

(struct people *)malloc(sizeof(struct student));

free:
其作用是释放由p指向的内存区,即将这部分内存还给系统。我们要注意动态开辟的内存在不用之后应及时还给系统,以免造成内存“遗漏”。free函数无返回值。

这里要说明的是,这种能动态开辟存贮空间的区域是内存的堆栈区。

实际上只有建立动态链表才是有意义的。

看看懂了不?《数据结构》有时候就是要多想想,看书看晕那是正常的,呵呵~