国家开放大学2023年秋《数据结构(本)-广州》实验报告参考答案

2023年12月1914:35:22发布者:江开学习小虫 42 views 举报
总字数:约3017字
第1页
1/7页

第2页
2/7页

第3页
3/7页

数据结构课程实验报告

学生姓名

学 号

班 级

计算机科学与技术

指导老师

实验名称

线性表的链式存储结构

实验成绩

实验报告

实验目的:掌握线性表的链式存储结构及基本操作,深入了解顺序表的基本特性。

实验要求:

(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)

总页数:7
提示:下载前请核对题目。客服微信:diandahome
下载的文档都包含参考答案
特别声明:以上内容(如有图片或文件亦包括在内)为“电大之家”用户上传并发布,仅代表该用户观点,本平台仅提供信息发布。