结构体与链表

声明变量体的一般形式为

struct 结构体名
{成员表列};

在花括号{ }后要加分号
“结构体名”用作结构体类型的标志,它又称“结构体标记”。花括号内是该结构体中的各个成员,由它们组成一个结构体。对各成员都应进行类型声明,即
类型名 成员名;
也可以把“成员表列” 称为“域表” 。每一个成员也称为结构体中的一个域。成员名命名规则与变量名相同。

结构体变量的引用

(1)不能将一个结构体变量作为一个整体进行输入和输出。 只能对结构体变量中的各个成员分别进行输入和输出。引用结构体变量中成员的方式为  结构体变量名.成员名
 “.”是结构体成员运算符,它在所有的运算符中优先级最高, 自左向右。
 (2)对结构体变量可以进行赋值

(3)结构体变量的地址主要用作函数参数,传递结构体变量的地址。

结构体数组的初始化
定义数组stu时,元素个数可以不指定,即写成以下形式:
stu[]={(…},{…},(…}};
编译时,系统会根据给出初值的结构体常量的个数来确定数组元素的个数。一个结构体常量包括结构体中全部成员的值。

(*p)表示p指向的结构体变量,(*p).num是p指向的结构体变量中的成员num。注意*p两侧的括号不可省,因为成员运算符“.”优先于“*”运算符,*p.num就等价于*(p.num)了。

为了使用方便和使之直观,可以把(*p).num改用p->num来代替,它表示p所指
向的结构体变量中的num成员。 

 即 p->成员名

p->n得到p指向的结构体变量中的成员n的值。
p->n++  得到p指向的结构体变量中的成员n的值,用完该值后使它加1。
++p->n  得到p指向的结构体变量中的成员n的值加1,然后再使用它。

结构体对齐 :提高cpu的执行效率

1、结构体按照其最长成员大小对齐,意味着最终的大小必须是最长成员大小的整数倍;
2、结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必须能够整除成员的字节数;
3、如果结构体某个成员的字节数大于CPU的字节数,则最长按照CPU的字节数对齐;
4、用预处理命令#pragma pack(n) 可以强制编译器按照指定的n来对齐,合法的n的数值分别是1、2、4、8、16。

用结构体变量和指向结构体的指针作函数参数
遍历

 

用指针处理链表

链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。

链表有一个“头指针”变量,以head表示,它存放一个地址,该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:用户需要用的实际数据和下一个结点的地址。可以看出,head指向第一个元素;第一个元素又指向第二个元素……直到最后一个元素,该元素不再指向其他元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。
可以看到链表中各元素在内存中可以不是连续存放的。要找某一元素,必须先找到上一个元素,根据它提供的下一元素地址才能找到下一个元素。如果不提供“头指针”(head),则整个链表都无法访问。 
头插:

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值