一、学习笔记(学习范围:4.2.2、4.2.3、4.2.4、4.2.5、4.2.6)
二、相关代码
三、遗留问题
1.设有如下定义的链表,则值为7的表达式是( )。
struct st{
int n;
struct st *next;} a[3] = {5, &a[1], 7, &a[2], 9, NULL}, *p = &a;
A、p->n
B、(p->n)++
C、++p->n
D、p->next->n
解析 :a[3]可看为一个链表,每两个为一个节点(5和&a[1]),p是取a的首地址。A中,p->n是结构体中n的值为5;B中,(p->n)++是先取值再将值加一;C中,->的优先级高于++,所以也是先取值再加一;D中,先指向a[0]的下一个也就是a[1],再指向数据部分值为7。
2.链表和数组对数据进行存储与操作的区别?
解析:①不需要事先定义存储空间大小,可以实时动态分配,内存使用效率高
②可以方便地插入新元素,使数据保持排序状态,操作效率高