数据结构实验一实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级::学号:
实验一线性表的基本操作
一、实验目的
1、掌握线性表的定义;
2、掌握线性表的基本操作,如建立、查找、插入和删除等。
二、实验容
定义一个包含学生信息(学号,,成绩)的顺序表和链表(二选一),使其具有如下功能:
(1) 根据指定学生个数,逐个输入学生信息;
(2) 逐个显示学生表中所有学生的相关信息;
(3) 根据进行查找,返回此学生的学号和成绩;
(4) 根据指定的位置可返回相应的学生信息(学号,,成绩);
(5) 给定一个学生信息,插入到表中指定的位置;
(6) 删除指定位置的学生记录;
(7) 统计表中学生个数。
三、实验环境
Visual C++
四、程序分析与实验结果
#include
#include
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; // 定义函数返回值类型
typedef struct
{
char num[10]; // 学号
char name[20]; //
double grade; // 成绩
}student;
typedef student ElemType;
typedef struct LNode
{
ElemType data; // 数据域
struct LNode *next; //指针域
}LNode,*LinkList;
Status InitList(LinkList &L) // 构造空链表 L {
L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL;
return OK;
}
Status GetElem(LinkList L,int i,ElemType &e) // 访问链表,找到 i位置的数据域,返回给 e
{
LinkList p;
p=L->next;
int j=1;
while(p&&j
{
p=p->next;
++j;
}
if(!p||j>i) return ERROR;
e=p->data;
return OK;
}
Status Search(LNode L,char str[],LinkList &p) // 根据名字查找
{
p=L.next;
while(p)
{
if(strcmp(p->,str)==0)
return OK;
p=p->next;
}
return ERROR;
}
Status ListInsert(LinkList L,int i,ElemType e) // 在 i个位置插入某个学生的信息
{
LinkList p,s;
p=L;
int j=0;
while(p&&j { p=p->next; ++j; } if(!p||j>i-1) return ERROR; s=(struct LNode*)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return OK; } Status ListDelete(LinkList p,int i) // 删除 i位置的学生信息{ int j=0; while((p->next)&&(j { 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; } void Input(ElemType *e) { printf(":"); scanf("%s",e->name); printf("学号:"); scanf("%s",e->num); printf("成绩:"); scanf("%lf",&e->grade); printf("输入完成\n\n"); } 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. 录入学生信息");