实验内容参考

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 (maxscore)

{

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;

}

相关文档
最新文档