最新国开计算机本科《数据结构》网核实践活动2.docx

最新国开计算机本科《数据结构》网核实践活动2.docx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最新国开计算机本科 《数据结构》网核实践活动2试题与答案 1. 线性表的链式存储结构 实验目的 掌握线性表的链式存储结构及基本操作,深入了解顺序表的基本特性。 问题描述 某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序: (1)显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)。 (2)在链表中删除一个最高分和一个最低分的结点。 (3)计算该参赛者去掉一个最高分和一个最低分后的平均成绩。 实验要求 (1)建立一个评委打分的单向链表。 (2)显示删除相关结点后的链表信息。 (3)显示要求的结果。 请认真阅读以上实验的问题描述,按照实验要求认真独立完成实验。如果在实验过程中遇到困难,你可以通过以下辅助方式,顺利完成本实验。 如果对于本实验无从下手,你可以通过查看“设计思路”,帮助你开拓思维。设计思路 (1)评委信息结点用结构变量存储,包含三个成员项,即姓名、年龄、评分。结构类型定义如下: //定义评委信息 struct pw { char name[8]; //姓名 short age; //年龄 float score; //评分 }; (2)用头插法或尾插法建立带头结点的单链表,本实验采用尾插法。 (3)遍历链表并逐次比较求最高分和最低分。 (4)在链表中物理删除,即实际删除最高分和最低分结点;也可以进行逻辑删除,即在被删结点的数据域设置一个删除标记,本实验采用物理删除的方法。 (5)遍历链表,累加求和,计算总分及平均分,并输出相关信息。 如果对于自己编写好的程序不知道是否正确,你可以查看“实验程序”进行核查。 如果对于自己编写的程序不知道是否正确,你可以通过查看“实验设计”进行核查。实验设计 程序代码如下: //实验1.1 线性表的链接存储结构 #include #include #include #define PWRS 5 //定义评委人数 //定义评委信息 struct pw { char name[8]; //姓名 short age; //年龄 float score; //评分 }; typedef struct pw PW; //定义链表结点 struct node { PW data; struct node * next; }; typedef struct node NODE; NODE *create(int n); //建立单链表 void input(NODE *s,int i); //输入第i个评委信息 void output(NODE *s); //输出评委信息 void traverse(NODE *head); //遍历链表 void calc(NODE *head); //计算及数据处理 void main() { NODE *head=NULL; head=create(PWRS); //建立评委信息单链表 printf(\n所有评委的评分信息如下:\n); traverse(head); //输出所有评委的评分信息 calc(head); //计算成绩 printf(该参赛者去掉一个最高分和一个最低分后的有效评委的评分信息如下:\n); traverse(head); //输出有效评委的评分信息 } //尾插法建立带头结点的单链表 NODE *create(int n) { NODE *head,*p,*q; int i; p=(NODE*)malloc(sizeof(NODE)); head=p; q=p; p-next=NULL; for(i=1; i=n; i++) { p=(NODE*)malloc(sizeof(NODE)); input(p,i); p-next=NULL; q-next=p; q=p; } return (head); } //输入评委信息,包括姓名、年龄和评分 void input(NODE *s,int i) { printf(请输入第 %d 个评委的姓名、年龄和评分:,i); scanf(%s%d%f,s-data.name,s-data.age,s-data.score); } //输出评委信息 void output(NODE *s) { printf(评委姓名:%6s 年龄:%d 评分:%6.2f\n,s-data.name,s-data.age,s-data.score); } //遍历链表,输出所有评委的评分信息 void traverse(NODE *head) { NODE *p=head-next; //指向第一个结点 while(p!=NULL) { output(p); p=p-next; } printf(\n); } //输出最高分及最低分评委信息,删除最高分及最低分结点并计

您可能关注的文档

文档评论(0)

心忆兰草 + 关注
实名认证
内容提供者

1968年出生,大学本科学历,高级讲师。

1亿VIP精品文档

相关文档