数据结构实验一实验报告

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

puts("3. 显示学生信息");

相关文档
最新文档