电大《数据结构》实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构形成性考核册

实验名称:实验一线性表

线性表的链式存储结构

【问题描述】

某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:

(1)显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)。

(2)在链表中删除一个最高分和一个最低分的结点。

(3)计算该参赛者去掉一个最高分和一个最低分后的平均成绩。

【基本要求】

(1)建立一个评委打分的单向链表;

(2)显示删除相关结点后的链表信息。

(3)显示要求的结果。

【实验步骤】

(1)运行PC中的Microsoft Visual C++ 程序,

(2)点击“文件”→“新建”→对话窗口中“文件”→“c++ Source File”→在“文件名”中输入“”

→在“位置”中选择储存路径为“桌面”→“确定”,

(3)输入程序代码,

程序代码如下:

#include <>

#include <>

#include <>

#include <>

#include <>

#define NULL 0

#define PWRS 5 2.2f ge=n; ame);

printf("性别0女1男: ");

scanf("%d",&m[i].sex);

printf("年龄: ");

scanf("%d",&m[i].age);

printf("\n");

}

return 1;

}

int calc(STD *m,STD *n,STD *r,float &Fage,float &Mage)

{ int i,j=1,k=1;

n[0].age=r[0].age=0;

for( i=1;i<=m[0].age;i++)

{ if(m[i].sex==0)

{

strcpy(n[j].name,m[i].name);

n[j].sex=m[i].sex; n[j].age=m[i].age;

n[0].age++; Mage+=m[i].age;j++;

}

else

{

strcpy(r[k].name,m[i].name);

r[k].sex=m[i].sex; r[k].age=m[i].age;

r[0].age++;Fage+=m[i].age;k++;

}

}

Mage=Mage/n[0].age; Fage=Fage/r[0].age;

cout<<"女生的平均年龄是:"<

return 1;

}

void print(STD *m)

{

for(int i=1;i<=m[0].age;i++)

{

printf ("姓名:%3s, 性别(0女1男):%d, 年龄:%d\n",m[i].name,m[i].sex,m[i].age);

}

}

程序运行结果如下:

实验结束。

实验结论:线性表采用链式存储(链表)时:以结构变量存储结点,动态生成结点,以指针链接结点,能有效利用存储空间,插入删除方便,但不能随机访问.单向链表可从某结点访问到后继结点。单向链表操作的关键步骤:建立链表的头插法:指针变量p 开辟单元,生成结点,指针变量q 始终指向头结点,操作为:p->next=q->next; q->next=p; 尾插法:指针变量q 始终指向尾结点,p 指针开辟单元,生成结点:q->next=p; q=p; 插入:p 所指向结点的后面插入新结点s 所指结点s->next=p->next; p->next=s; 删除:p,q 指向相邻结点,q 所指结点是p 所指结点的后继,删除q 所指结点,p->next=q->next; 遍历:p=p->next;

实验名称:实验二栈、列队、递归程序设计

栈和队列的基本操作

【问题描述】

编写一个算法,输出指定栈中的栈底元素,并使得原栈中的元素倒置。

【基本要求】

(1)正确理解栈的先进后出的操作特点,建立初始栈,通过相关操作显示栈底元素。

(2)程序中要体现出建栈过程和取出栈底元素后恢复栈的入栈过程,按堆栈的操作规则打印结果栈中的元素。【实验步骤;】

(4)运行PC中的Microsoft Visual C++ 程序,

(5)点击“文件”→“新建”→对话窗口中“文件”→“c++ Source File”→在“文件名”中输入“”

→在“位置”中选择储存路径为“桌面”→“确定”,

(6)输入程序代码,

程序代码如下:

#include <>

#include <>

#define MaxSize 100

typedef char ElemType;

typedef struct

{

ElemType data[MaxSize];

int top;

ame );

x=s[0].avg ;

while(low<=hight)

{

mid=(low+hight)/2;

if(x>s[mid].avg )

hight=mid-1;

else

low=mid+1;

}

for(k=0;k

strcpy(s[k].name,s[k+1].name) ;

s[k].avg =s[k+1].avg ;

}

printf("%d",low);

strcpy(s[low-1].name ,y) ;

s[low-1].avg =x;

}

void main()

{

Struct student a[N]=

{{"caozh",96},{"cheng",95},{"zhao",93},{"wang",92},{"chen",91}};

struct student stu[N];

int i;

for(i=0;i

stu[i+1]=a[i];

printf("初始 %d 位同学的信息表\n",MAX); 1 2 5

4 3

相关文档
最新文档