数据结构实验一实验报告

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

欢迎下载
7

for(int i=1;i<=x;i++) {
printf(" 第%d 个学生 :\n",i); Input(&a); ListInsert(&L,i,a); } break; case 3: for(int i=1;i<=x;i++) { GetElem(&L,i,b); Output(&b); } break; case 4: char s[20]; printf(" 请输入要查找的学生姓名 :"); scanf("%s",s); if(Search(L,s,p)) Output(&(p->data)); else puts(" 对不起,查无此人 ");
void Input(ElemType *e) {
欢迎下载
5

printf(" 姓名 :"); scanf("%s",e->name); printf(" 学号 :"); scanf("%s",e->num); printf(" 成绩 :"); scanf("%lf",&e->grade); printf(" 输入完成 \n\n"); }
puts(" 请选择 :"); scanf("%d",&choose); switch(choose) {
case 1: if(InitList(p)) printf(" 成功建立链表 \n\n"); else printf(" 链表建立失败 \n\n"); break;
case 2: printf(" 请输入要录入学生信息的人数 :"); scanf("%d",&x);
p=p->next; ++j; } if(!p||j>i) return ERROR; e=p->data; return OK; }
访问链表,找到 i 位置的数据域,
Status Search(LNode L,char str[],LinkList &p) // {
p=L.next; while(p)
欢迎下载
8

puts(""); break; case 5: printf(" 请输入要查询的位置 :"); int id1; scanf("%d",&id1); GetElem(&L,id1,c); Output(&c); break; case 6: printf (" 请输入要插入的位置 :"); int id2; scanf("%d",&id2); printf(" 请输入学生信息 :\n"); Input(&d); if(ListInsert(&L,id2,d)) {
L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL; return OK;
欢迎下载
2

}
Status GetElem(LinkList L,int i,ElemType &e) // 返回给 e {
LinkList p; p=L->next; int j=1; while(p&&j<i) {
typedef student ElemType;
typedef struct LNode {
ElemType data; // 数据域 struct LNode *next; // 指针域 }LNode,*LinkList;
Status InitList(LinkList &L) // 构造空链表 L {
void Output(ElemType *e)
{
printf("


:%-20s\n


:%-10s\n

绩 :%-10.2lf\n\n",e->name,e->num,e->grade);
}
int main() {
LNode L; LinkList p; ElemType a,b,c,d; printf("\n********************************\n\n"); puts("1. 构造链表 "); puts("2. 录入学生信息 "); puts("3. 显示学生信息 "); puts("4. 输入姓名,查找该学生 ");
用户界面 :
(1) 根据指定学生个数,逐个输入学生信息:
欢迎下载
中所有学生的相关信息:
(3) 根据姓名进行查找,返回此学生的学号和成绩:
欢迎下载
12

(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩) :
(5) 给定一个学生信息,插入到表中指定的位置:
(6) 删除指定位置的学生记录:
#include<string.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2

typedef int Status; // 定义函数返回值类型
typedef struct {
char num[10]; // 学号 char name[20]; // 姓名 double grade; // 成绩 }student;
(7) 统计表中学生个数:
五、 实验总结
数据结构是一门专业技术基础课。它要求学会分析研究计算机加工的数据结构的特性,以 便为应用涉及的数据选择适当的逻辑结构,存储结构及相应的算法,并初步掌握算法的时间分 析和空间分析技术。不仅要考虑具体实现哪些功能,同时还要考虑如何布局,这次的实验题目
欢迎下载
13

(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩)

(5) 给定一个学生信息,插入到表中指定的位置;
(6) 删除指定位置的学生记录;
(7) 统计表中学生个数。
三、 实验环境
Visual C++
四、 程序分析与实验结果
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
Status ListDelete(LinkList p,int i) // 删除 i 位置的学生信息 {
int j=0; while((p->next)&&(j<i-1)) {
p=p->next; ++j; } if(!(p->next)||(j>i-1)) return ERROR; LinkList q; q=p->next; p->next=q->next; delete q; return OK; }
14
x--; puts(" 删除成功 "); puts(""); } else { puts(" 删除失败 "); puts(""); } break; case 8:
欢迎下载
10

printf(" 已录入的学生个数为 :%d\n\n",x); break; } } printf("\n\n 谢谢您的使用,请按任意键退出 \n\n\n"); system("pause"); return 0; }
1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。
二、 实验内容
定义一个包含学生信息(学号,姓名,成绩)的
顺序表和链表(二选一) ,使其具有如下功能:
(1) 根据指定学生个数,逐个输入学生信息;
(2) 逐个显示学生表中所有学生的相关信息;
(3) 根据姓名进行查找,返回此学生的学号和成绩;
欢迎下载
6

puts("5. 显示某位置该学生信息 "); puts("6. 在指定位置插入学生信息 "); puts("7. 在指定位置删除学生信息 "); puts("8. 统计学生个数 "); puts("0. 退出 "); printf("\n********************************\n\n"); int x,choose=-1; while(choose!=0) {
根据名字查找
欢迎下载
3

{ if(strcmp(p->,str)==0) return OK; p=p->next;
} return ERROR; }
Status ListInsert(LinkList L,int i,ElemType e) // {
LinkList p,s; p=L; int j=0; while(p&&j<i-1) {
p=p->next; ++j; } if(!p||j>i-1) return ERROR; s=(struct LNode*)malloc(sizeof(LNode)); s->data=e; s->next=p->next;
在 i 个位置插入某个学生的信息
欢迎下载
4

p->next=s; return OK; }
不仅要考虑具体实现哪些功能同时还要考虑如何布局这次的实验题目是根据我们的课本学习进程出的说实话我并没有真正的读懂书本的知识所以刚开始的时候感到很棘手于是又重新细读课本这一方面又加强了对书本的理解在这上面花费了一些心血觉得它并不简单是需要花大量时间来编写的
班级:
姓名:
学号:
实验一 线性表的基本操作
一、 实验目的
x++; puts(" 插入成功 "); puts(""); } else
欢迎下载
9

{ puts(" 插入失败 "); puts("");
} break; case 7: printf(" 请输入要删除的位置 :"); int id3; scanf("%d",&id3); if(ListDelete(&L,id3)) {
是根据我们的课本学习进程出的,说实话,我并没有真正的读懂书本的知识,所以刚开始的时 候,感到很棘手,于是又重新细读课本,这一方面又加强了对书本的理解,在这上面花费了一 些心血,觉得它并不简单,是需要花大量时间来编写的。 。在本次实验中,在程序构思及设计方 面有了较大的锻炼,能力得到了一定的提高。
欢迎下载
相关文档
最新文档