Lesson22讲述.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Lesson22讲述

Lesson 22 单链表 插入、删除链表结点 有序数组 插入链表结点 在第i个元素前插入一个新元素x 首先找到ai-1的存储位置p 生成一个数据域为x的新结点*s 插入过程 先做:s-next=p-next 再做:p-next=s 5 3 5 3 x P P S ai-1 ai 1 2 int ListInsert_L(node *L, int i, int x){ node *s, *p=L; int j=0; while( p j i-1 ) //注意是两个条件 {p=p-next; ++j;} //寻找第i-1结点 if( ! p || ji-1 ) return -1; // i小于1或大于(表长+1) s=(node*)malloc(sizeof(node)); //生成新结点 s-data=x; s-next=p-next; p-next=s; return 0; } ∧ an ai a1 a2 ai-1 x *L 删除链表结点 删除运算是将表的第i个结点删去。 思路 首先找到ai-1的存储位置p q=p-next,为处理被删除结点做准备 删除操作:p-next=q-next 等价于:p-next=p-next-next 处理q所指结点 ai-1 a1 ai ai+1 *L p q int ListDelete_L(node *L,int i, int e){ node *q, *p=L; int j=0; while( p-next ji-1) { p=p-next; ++j; } //寻找第i-1结点 if( ! (p-next) || ji-1 ) return -1; //删除位置不合理 q=p-next ; p-next=q-next; e = q-data ; //参数带回被删数值 free(q); return 0; } 例:学生考试成绩处理 记录学生考试成绩情况,每个学生考试科目不同,考试门数也不同。记录每个学生的每次考试成绩(课程名称和考试成绩) 假设在一个班中有35名学生。 请编写一个C程序,记录这个班级中每个学生的考试成绩情况。 输出成绩单。 数据结构 数据 成绩链结点:学生选修每门课程和成绩,一个学生一个单链表,链表结点数据有:课程名,成绩,单链表指针。 /* 考试成绩结点结构 */ struct CNODE { char cname[16]; /* 课程名称 */ int score; /* 成绩 */ CNODE *next; } ; 数据 学生信息:结构体数组,每个数组元素有数据:学生姓名,指向成绩链的指针。 /* 学生基本信息结构 */ typedef struct { char name[20]; /* 学生姓名 */ CNODE* head; /* 指向成绩链表的指针 */ } SNODE; #define NUM 35 SNODE s[NUM]; 功能 定义每个模块中函数(函数功能,函数名,参数,返回值)。 void initStuInfo(SNODE[ ]); void inputCourseInfo(SNODE[ ], int No); void outputInfo(SNODE[ ]); void main( ) { int i; SNODE s[NUM]; initStuInfo(s); // 输入学生信息 for (i=0; iNUM; i++) inputCourseInfo(s, i);//输入一个学生的所有成绩 outputInfo(s); // 输出所有学生的信息和成绩 } void initStuInfo(SNODE s[ ]) { int i; printf(\nEnter information of %d students:\n, NUM); for (i=0; iNUM; i++) { gets(s[i].name); s[i].head = NULL; } } voi

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档