结构指针 为结构指针动态分配内存 结构中的结构 双向链表 结构指针 struct mytime { //char name[256]; int hour;//时 int min; //分 int sec; //秒 }; struct stu_data { char name[256];//学生名字 struct mytime stuTime;//签到时间 } ; struct stu_data *stu; // int *pi; 为结构动态分配内存 stu=malloc(sizeof(struct stu_data)); //256+12=268 结构中的结构 struct stu_data { char name[256];//学生名字 struct mytime { //char name[256]; int hour;//时 int min; //分 int sec; //秒 } stuTime;//签到时间 } ; struct mytime t2; struct stu_data *stu; 双向链表结构 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。 struct mytime { //char name[256]; int hour;//时 int min; //分 int sec; //秒 }; struct stu_data { char name[256];//学生名字 struct mytime stuTime;//签到时间 struct stu_data* front; //指向前一个结点 struct stu_data* back; //指向后一个结点 } ; stu=malloc(sizeof(struct stu_data)); //256+12=268 1 front back name stuTime ... 其它数据 NULL 2 2 name stuTime ... 其它数据 1 3 3 name stuTime ... 其它数据 2 4 4 name stuTime ... 其它数据 3 xx XX name stuTime ... 其它数据 4 0x0041118 0x0041118 name stuTime ... 其它数据 xx NULL