第一范文网 - 专业文章范例文档资料分享平台

129317718743750000《算法与数据结构实验》实验指导书(1-3)

来源:用户分享 时间:2025/5/23 6:46:45 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验一 线性表操作

一、 实验目的

1.掌握用 C语言调试程序的基本方法。 2. 掌握结构体类型的基本用法。

3.掌握线性表的基本运算,包括顺序表和链表的基本操作,如插入、删除等。

二、 实验内容

1.利用顺序表完成一个班级的一个学期的所有课程的管理:能够增加、删除、修改学生的成绩记录。 2.建立一个单链表,同时对该链表实现指定位置的插入、删除操作。

三、 实验操作(在空白处填上合适的代码)

(一)利用顺序表完成一个班级学生课程成绩的简单管理

1、预定义以及顺序表结构类型的定义

(1)#define ListSize //根据需要自己设定一个班级能够容纳的最大学生数 (2)typedef struct Stu

{

int num;

char name[10]; float wuli; float shuxue;

float yingyu; }STUDENT; typedef struct List {

stu[ListSize];

int length;

}LIST;

2、建立班级的学生信息

void listcreate(LIST *Li,int m) //m为该班级的实际人数 { int i;

Li->length=0;

for(i=0;i

printf(\printf(\

scanf(\输入第i个学生的学号

//存放学生的数组定义,静态分配空间 //记录班级实际学生个数

//存放班级学生信息的顺序表类型

//学生的学号 //学生的姓名 //物理成绩 //数学成绩

//英语成绩

//存放单个学生信息的结构体类型

} }

printf(\

scanf(\输入第i个学生的姓名 printf(\

scanf(\输入第i个学生的物理成绩 printf(\

scanf(\输入第i个学生的数学成绩 printf(\

scanf(\输入第i个学生的英语成绩 Li->length++; //学生人数加1

3、插入一个学生信息

int listinsert(LIST *Li,int i) {

int j; STUDENT e;

if( ) { }

printf(\无更多的存储空间!\\n\return 0;

//测试存储空间是否被占满

//将学生插入到班级Li的第i个位置。

if ( )

return 0; else {

//插入位置检验,如果错误就返回0退出程序。

printf(\请输入插入的学生信息:\

printf(\printf(\printf(\

printf(\printf(\

for(j= ;j>= ;j--) //从i位置到最后的元素依次往后移动 Li->stu[j+1]=Li->stu[j]; =e; Li->length++;

//学生e放入到i位置 //学生实际人数加1

return 1; } }

4、删除一个学生信息 int listdel(LIST *Li,int i) {

int j;

if ( ) {

return 0;

else

for(j= ;j< ;j++) //从删除位置后一个到最后的元素依次往前移动

Li->stu[j-1]=Li->stu[j];

Li->length--;

//删除第i个学生的信息

//删除位置检验,如果错误就返回0退出程序。

return 1; } }

5、显示所有学生信息 void listdisplay(LIST L) { int i;

printf(\班级学生信息如下:\\n\ for(i=0;i< ;i++)

printf(\学号]s[姓名].2f[物理成绩].2f[数学成绩].2f[英语成绩]\\n\}

6、编写主函数main,要求测试以上所编写的listcreat、listinsert、listdel和listdisplay 自己设计主函数完成。

(二)利用单链表完成一个班级学生课程成绩的简单管理

1、单链表结构体类型的定义

typedef struct Stu

{

int num;

//学生的学号 //学生的姓名 //物理成绩 //数学成绩

//英语成绩

//存放单个学生信息的结构体类型

char name[10]; float wuli; float shuxue;

float yingyu; }STUDENT;

typedef struct Snode {

STUDENT data; //结点的值

struct Snode *link; //指向下一个结点的地址 }SNODE;

2、建立班级学生信息

SNODE *listcreate(int n) {

int i;

SNODE *head,*p,*q;

if(n==0)

return NULL;

//如果要创建的是空表,返回NULL

//n为该班级的实际人数

head=p=(SNODE *)malloc(sizeof(SNODE));

//动态建立第一个结点,head指针指向

printf(\ printf(\ //输入第1个学生的学号 printf(\

//输入第1个学生的姓名

printf(\//输入第1个学生的物理成绩 printf(\输入第1个学生的数学成绩 printf(\输入第1个学生的英语成绩

for(i=1;i

q=(SNODE *)malloc(sizeof(SNODE));

printf(\ printf(\ printf(\ printf(\printf(\q->link=NULL;

}

}

129317718743750000《算法与数据结构实验》实验指导书(1-3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4ixam0mfey3y3j84w1e7_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top