教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

数据结构实验指导书(2016)(2)

来源:网络收集 时间:2026-05-26
导读: sum+=sub[i].subject_grades; } average=sum/10; printf(\} void subjct_gtaverage() { int i,flag; double average,sum=sub[0].subject_grades; for(i=1;i sum+=sub[i].subject_grades; } average=sum/10; for(i=0

sum+=sub[i].subject_grades; }

average=sum/10;

printf(\}

void subjct_gtaverage() {

int i,flag;

double average,sum=sub[0].subject_grades; for(i=1;i<10;i++) {

sum+=sub[i].subject_grades; }

average=sum/10; for(i=0;i<10;i++) {

if(sub[i].subject_grades>average) {

flag=i;

printf(\greater than is %s %lf\\n\

} } }

int main() {

input();

subject_max(); subject_average(); subjct_gtaverage(); return 0; }

average

实验二顺序表的基本操作

实验预备知识:

1.熟练运用数组进行程序设计,掌握数组名和指针作为函数参数。 2.掌握结构体和结构体数组的访问与使用。 3.熟练实现顺序表类型和变量(如下所示)定于、熟悉顺序表的访问原理(顺序存储、随机访问)。

第3页 /共58页

一、实验目的

1.掌握顺序表的建立、数据元素的插入和删除、掌握数据元素的访问。 2.能够熟练的使用函数来实现顺序表的各种操作。

二、实验环境

⒈ 硬件:每个学生需配备计算机一台。 ⒉ 软件:Windows操作系统+Turbo C;

三、实验要求

1.定义一顺序表类型,并定义顺序表。

2.将教材中顺序表的建立、初始化、插入、删除等函数实现。

3.顺序表能够存储10名学生的基本信息(包括姓名、学号和成绩)。 4.由主函数按照用户要求对各个顺序表操作访问。

5.每次操作之前要有明确的说明,操作后要输出操作结果。 6.分析顺序表的插入、删除、查找的时间和空间复杂度。

四、实验内容

1.在自己的U盘的“姓名+学号”文件夹中创建“实验2”文件夹,本次实验的所有程序和数据都要求存储到本文件夹中。

2.完成顺序表操作的如下函数:建立,初始化,增加,插入,删除。

#include \#include \#include \

#define LIST_INIT_SIZE 1 #define LISTINCREMENT 1

struct stu

{char name[6]; char num[3]; int cj;};

第4页 /共58页

struct sqlist

{struct stu *elem; int length; int listsize;};

void main()

{struct sqlist* initlist_hc(); void cshlist_hc(struct sqlist *l); void listinsert_hc(struct sqlist *l); void listdelete_hc(struct sqlist *l);

void listhb_hc(struct sqlist *l1,struct sqlist *l2,struct sqlist *l3); struct sqlist *l1,*l2,*l3; char f;int i, k=0;

printf(\请选择对顺序表的操作,操作菜单如下:\\n\for(i=0;i<80;i++)printf(\printf(\建立顺序表(C)\\n\printf(\初始化顺序表(N)\\n\printf(\顺序表中插入元素(I)\\n\printf(\顺序表中删除元素(D)\\n\printf(\合并顺序表(H)\\n\printf(\退出系统(E)\\n\for(i=0;i<80;i++)printf(\do

{printf(\输入大写字母按Enter确定:\flushall(); f=getchar(); if(f=='C')

{if(k==0)l1=initlist_hc(); else {l2=initlist_hc();} k++;}

else if(f=='N')

{if(k==1)cshlist_hc(l1);else cshlist_hc(l2);} else if(f=='I')

{if(k==1)listinsert_hc(l1);else listinsert_hc(l2);} else if(f=='D')

{if(k==1)listdelete_hc(l1);else listdelete_hc(l2);} else if(f=='H') {l3=initlist_hc(); listhb_hc(l1,l2,l3);} }while(f!='E'); }

struct sqlist *initlist_hc() {struct sqlist *l;

l=(struct sqlist*)malloc(sizeof(struct sqlist));

第5页 /共58页

if(!l)printf(\出错!\\n\return(l);}

void cshlist_hc(struct sqlist *l) {struct stu *newbase;

void printlist_hc(struct sqlist *l); char x[6],y[3];int z;

l->elem=(struct stu*)malloc(LIST_INIT_SIZE*sizeof(struct stu)); if(!l->elem)printf(\出错!\\n\l->length=0;

l->listsize=LIST_INIT_SIZE; printf(\请输入信息以-1结束:\\n\scanf(\while(z!=-1)

{if(l->length==l->listsize)

{newbase=(struct stu*)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(struct stu)); if(!newbase)printf(\出错!\\n\

l->elem=newbase;l->listsize+=LISTINCREMENT;} strcpy(l->elem[l->length].name,x); strcpy(l->elem[l->length].num,y); l->elem[l->length].cj=z; scanf(\if(z!=-1)l->length++;} printlist_hc(l);}

void listinsert_hc(struct sqlist *l) {int i,j;

struct stu *newbase;

void printlist_hc(struct sqlist *l); if(l->length==l->listsize)

{newbase=(struct stu*)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(struct stu)); if(!newbase)printf(\出错!\\n\

l->elem=newbase;l->listsize+=LISTINCREMENT;} printf(\输入要插入信息的位置:\scanf(\for(i=l->length;i>=j;i--)

{strcpy(l->elem[i+1].name,l->elem[i].name); strcpy(l->elem[i+1].num,l->elem[i].num); l->elem[i+1].cj=l->elem[i].cj;} printf(\输入插入信息:\\n\

scanf(\l->length++; printlist_hc(l);}

第6页 /共58页

void listdelete_hc(struct sqlist *l) {void printlist_hc(struct sqlist *l); int i,j;

printf(\输入删除信息的位置:\scanf(\

printf(\删除的信息为:%s,%s,%d\\n\for(i=j+1;i<=l->length;i++)

{strcpy(l->elem[i-1].name,l->elem[i].name); strcpy(l->elem[i-1].num,l->elem[i].num); l->elem[i-1].cj=l->elem[i].cj;} l->length--; printlist_hc(l);}

void listhb_hc(struct sqlist *l1,struct sqlist *l2,struct sqlist *l3) {void printlist_hc(struct sqlist *l); struct stu *p1,*p2,*p3;

struct stu *p1_last,*p2_last; p1=l1->elem;p2=l2->elem;

l3->length=l1->length+l2->length+1; l3->listsize=l1->length+l2->length+2;

p3=l3->elem=(struct stu*)malloc(l3->listsize*sizeof(struct stu)); if(!l3->elem)printf(\出错!\\n\p1_last=l1->elem+l1->length; p2_last=l2->elem+l2->length;

while(p1<=p1_last&&p2<=p2_last) {if(p1->cj>p2->cj)

{strcpy(p3->name,p1->name); strcpy(p3->num,p1->num); p3->cj=p1->cj;p1++;p3++;} else

{strcpy(p3->name,p2->name); strcpy(p3->num,p2->num); p3->cj=p2->cj;p2++;p3++;} }

while(p1<=p1_last)

{strcpy(p3->name,p1->name); strcpy(p3->num,p1->num); p3->cj=p1->cj;p1++;p3++;} while(p2<=p2_last)

{strcpy(p3->name,p2->name); strcpy(p3->num,p2->num); p3->cj=p2->cj;p2++;p3++;} printlist_hc(l3);}

第7页 /共58页

…… 此处隐藏:2290字,全部文档内容请下载后查看。喜欢就下载吧 ……
数据结构实验指导书(2016)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/447495.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)