关于建立动态链表
发布网友
发布时间:2022-05-29 21:16
我来回答
共1个回答
热心网友
时间:2024-08-25 09:33
动态链表就是在需要时才开辟结点的存储空间的那种链表。就好比火车那样,静态链表就是只有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函数无返回值。
这里要说明的是,这种能动态开辟存贮空间的区域是内存的堆栈区。
实际上只有建立动态链表才是有意义的。
看看懂了不?《数据结构》有时候就是要多想想,看书看晕那是正常的,呵呵~