标签:Week head 进阶 temp int Coursera next 链表 student
结构体与链表(Week 7)
结构体
- 用一组变量来描述同一个“事物”
- 构造一个新的数据类型——结构体
struct student
{
int id;
char name[20];
char sex;
int age;
float score;
char addr[30];
}; //注意大括号后的;
-
定义结构体类型的变量
- 定义结构体变量的方式
-
直接用已声明的结构体类型定义变量名
student student1,student2
-
在声明类型的同时定义变量,在大括号之后,;之前。
- 结构体变量的赋值
- 相当于copy一份给对方
- 结构体做函数参数
- 相当于copy一份给函数
- 结构体变量做函数返回值
- 现挡雨copy一份给调用者
-
指向结构体的指针
- -> 指向运算符,访问结构体的成员变量
-
结构体数组
- 数组名相当于指向数组第一个元素的指针
- 指向元素的指针++,则跨过一整个结构体
小结
结构体数据类型的特性与普通数据类型的特性是一致的
链表
-
一种非常常用的数据结构
- 链表头:指向第一个链表结点的指针
- 链表结点:链表中的每一个元素,包括:
- 当前节点的数据
- 下一个节点的地址
- 链表尾:不再指向其他结点的结点,其地址部分放一个NULL,表示链表到此结束
-
链表可以动态地创建
- 动态地 申请内存空间
- int *pint = new int(1024); delete pint;
- int *pia = new int[4]; delete[] pia;
- 动态地建立链表节点
- 动态地 申请内存空间
struct student
{
int id;
student *next;
};
student *head;
head = new student;
-
逐步建立链表
- Step 1:
- head = new student;
- student *temp = head;
- Step2:
- Continue?
- Y:
- temp->next = new student;
- temp = temp->next;
- goto Step2;
- N:
- temp->next = NULL;
- Step 1:
-
链表元素的遍历
- 一个pointer
-
链表元素的删除
- temp = head; head = head->next; delete temp;
- follow->next = temp->next;delete temp;
-
链表元素的插入
- unit->next = head; head = unit;
- unit->next = temp;
- follow->next = unit
-
双向链表
- 包含两个指针,一个指向后继,一个指向前驱
- 删除和插入操作略微麻烦
- 应用事例:约瑟夫问题
标签:Week,head,进阶,temp,int,Coursera,next,链表,student 来源: https://www.cnblogs.com/maimai-d/p/12868652.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。