实验内容参考
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验内容:
一共4个实验,写在实验报告单上。
实验一:线性表的链式存储结构
1.问题描述:某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:
(1)显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)(2)在链表中删除一个最高分和一个最低分的结点。
(3)计算该参赛者去掉一个最高分和一个最低分后的平均成绩。
2.基本要求:
(1)建立一个评委打分的单向链表。
(2)显示删除相关结点后的链表的信息。
(3)显示要求的结果。
3.测试数据
4.实现提示
(1)结点用结构变量存储,至少包含三个成员项,即姓名、评分、年龄。
(2)用头插法或尾插法建立链表。
(3)用扫描链表并逐次比较求最高分和最低分。
程序代码参考:
#include
#include
#include
struct node
{
char name[10];
float score;
int age;
node *next;
};
typedef struct node NODE;
#define NULL 0
NODE *creat1(int n);
void main()
{
NODE *p,*pa,*p1,*p2,*p3,*flagmax,*flagmin;
int n=5;
float max,min;
p1=creat1(n);
p=p1;
p1=p1->next;
p2=p1->next;
p3=p1->next;
max=p2->score;
min=p3->score;
while(p2!=NULL)
{
if (max
{
max=p2->score;
flagmax=p2;
printf("%f",flagmax->score); }
p2=p2->next;
};
printf("ceshi2222222222222\n");
//删除最大值结点
printf("%f",flagmax->score);
pa=p;
while (pa->next!=flagmax)
{
pa=pa->next;
}
pa->next=flagmax->next;
free(flagmax);
//
while(p3!=NULL)
{
if(min>p3->score)
{
min=p3->score;
flagmin=p3;
}
p3=p3->next;
};
printf("ceshi000\n");
//删除最小值结点
pa=p;
while (pa->next!=flagmin)
{
pa=pa->next;
pa->next=flagmin->next;
free(flagmin);
//
printf("ceshi11111\n");
do
{
printf("%s\n",p1->name);
printf("%f\n",p1->score);
printf("%d\n",p1->age);
p1=p1->next;
}while (p1!=NULL);
}
NODE *creat1(int n)
{
NODE *head,*p,*q;
char a[10];
float b;
int c,i;
p=(NODE*)malloc(sizeof(NODE));
head=p;
q=p;
p->next=NULL;
for(i=1;i<=n;i++)
{
p=(NODE*)malloc(sizeof(NODE));
scanf("%s",&a);
scanf("%f",&b);
scanf("%d",&c);
strcpy(p->name,a);
p->score=b;
p->age=c;
p->next=NULL;
q->next=p;
q=p;
}
return (head);
}
实验二:栈、队列、递归程序设计
问题描述:编写一个算法,输出指定栈中的栈底元素,并使得原栈中的元素倒置。
基本要求:
(1)正确理解栈的先进后出的操作特点,建立初始栈,通过相关操作显示栈底元素。(2)程序中要体现出建栈过程和取栈底元素后恢复栈的入栈过程,按堆栈的操作规则打印结果栈中的元素。
测试数据:
实现提示:
(1)采用顺序栈,即用数组存储栈元素。
(2)设定一个临时队列,用来存放从初始栈中出栈的元素。
(3)取出栈底元素后,要将队列中的元素逐一出队并压入出始栈中。
参考程序:
#include
#include
#include
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[10];
int top=9;
int bottom=0;
int front=0;
int rear=0;
//将数组a中的元素出栈,并将出栈元素送入队列b
do
{
b[rear]=a[top];
top=top-1;
rear=rear+1;
}while top=0;
printf("%d",a[top]);
top=top-1;
do
{
top=top+1;
a[top]=b[front];
front=front+1;
}while front=rear;
}