- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简单链表及其应用 链表 思考:如何描述一个班的学生基本信息(学号、姓名、年龄等)? struct student{ int ID; char Name[20]; int age; }stu[30]; 链表 将若干个同类型的结构体类型数据按一定的原则连接起来。 链表的特点 couthead-ID; student *p=head; coutp-Name; p=p-next; coutp-age; 链表的特点 结点可不连续存储 操作灵活,便于扩充(动态分配空间) 链表的特点 链表的操作之建立无序链 链表为空(head==0) head=p1; p2=p1; 链表的操作之建立无序链 链表为空(head==0) head=p1; p2=p1; 链表不为空 p2-next=p1; p2=p1; p1用来指向新结点 p2用来指向链表当前尾结点 链表的操作之输出链表上各个结点的值 遍历链表结点(“看”一个输出一个) p=head; coutp-data; p=p-next; coutp-data;…… p=p-next; //p=NULL(遍历的终止条件) 链表的操作之删除某结点 先找到要删除结点 --如果是头结点 p1=head; head=head-next; delete p1; 链表的操作之删除某结点 先找到要删除结点 --以“找到”或“到尾找不到”为终止条件的遍历 p2=head; while(p2-data!=data3 p2-next!=NULL) p2=p2-next; 链表的操作之删除某结点 p1-next=p2-next; //p2指向要删除结点,p1指向要删除结点的前驱结点 delete p2; 先找到要删除结点(包括其前驱结点),再删除 链表的操作之删除整个链 遍历链表(“看”一个删一个) p1=head; head=head-next; //或head=p1-next; delete p1; 链表的操作之删除整个链 遍历链表(“看”一个删一个) while(head!=NULL){ p1=head; head=head-next; //或head=p1-next; delete p1; } 链表的操作之插入结点保持有序 p-next=head; head=p; 链表的操作之插入结点保持有序 p2-next=p; p-next=0; 链表的操作之插入结点保持有序 p-next=p2; p1-next=p; 先找到插入点! 链表的操作之总结 链表的操作主要依靠指针和动态空间实现 头指针是链表的访问依据 改变部分链表的函数(插入、删除结点等)需要返回改变后的链表(通过头指针) 课堂练习 设计函数统计链表的结点个数 遍历链表,“看”一个,计数器累加一次 返回值为结点的个数,整型 int count(const node *head) { const node *p=head;int n=0; while(p!=NULL) {n++;p=p-next;} retrun n; } 课堂练习 将一无序链表按升序排序 冒泡排序 if(p-data p-next-data) {temp=p-data, p-data= p-next-data, p-next-data =temp} 课堂练习 将一无序链表按升序排序 冒泡排序 if(p-data p-next-data) {temp=p-data, p-data= p-next-data, p-next-data =temp} p=p-next; 课堂练习 将一无序链表按升序排序 冒泡排序 if(p-data p-next-data) {temp=p-data, p-data= p-next-data, p-next-data =temp} p=p-next; 课堂练习 将一无序链表按升序排序 冒泡排序 if(p-data p-next-data) {temp=p-data, p-data= p-next-data, p-next-data =temp} p=p-next; 课堂练习 void sort(node * head) { node *p=head; for(int i=0;icount(head)-1;i++){ for(int j=0;jcount(head)-i-1;j++) { if(p-data p-next-data) {temp=p-data;p-data= p-next-data; p-next-data =temp;} p=p-next; } p=head;} } * * 1001 张 18 1002 李 19 10
您可能关注的文档
最近下载
- 《2023年甘肃省职业院校技能大赛职业英语技能赛项职业英语能力测试模块试题口语决赛样题》.pdf
- 建筑工程建筑面积计算规范GBT50353-2022[13].pdf
- JB/T 9628-1999 汽轮机叶片 磁粉探伤方法.pdf
- 0i-TF PLUS车床操作说明书.pdf
- 陈传明管理学笔记1.马工程——总论.pdf
- 06J925-2 压型钢板、夹芯板屋面及墙体建筑构造(二).docx VIP
- 《高速公路基础设施数字化建设数据标准》.pdf VIP
- 计算机组装与维护 知识点整理.pdf VIP
- 《员工满意度研究国内外文献综述》3900字.docx VIP
- 勤俭节约主题班会 主题班会.ppt VIP
文档评论(0)