1. malloc()申请空间
malloc()函数其实就在内存中找一片指定大小的空间,
在使用malloc()分配内存空间后,一定要记得释放内存空间,否则就会出现内存泄漏。
2. free()到底释放了什么
free()释放的是指针指向的内存!注意!释放的是内存,不是指针!指针并没有被释放,指针仍然指向原来的存储空间。指针是一个变量,只有程序结束时才被销毁。释放了内存空间后,原来指向这块空间的指针还是存在!只不过现在指针指向的内容的垃圾,是未定义的,所以说是垃圾。因此,释放内存后把指针指向NULL,防止指针在后面不小心又被解引用了。
3. 链表
q->.link:=p->link;p->link=q
q->link=p->link
----------------------------------------------------------------------------
你可以把link表示为该某个小朋友的右手。
q->.link:=p->link;p->link=q
这里q和p各是一个小朋友。
q->link=p->link;这句表示,q这个小朋友的右手拉的人变为p这个小朋友右手拉的人。
p^link:=q,这句表示,p这个小朋友拉住q.
两句合起来实现了q这个小朋友插入到队伍中来,并且拉在p之后。
p->llink->rlink=q
-------------------------------------------------------------------------------
p是一个指向一个结构体(或类)的指针,该结构体含有llink成员,而llink也是一个指向另一个结构体(或类)的指针,后者的结构体含有rlink成员
p->llink->rlink=q
可以把p->llink看成A,即左边的一个结构体
A-.>rlink=q
4. 补充:
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。