数据结构线性表存储实验报告

  • 格式:doc
  • 大小:570.00 KB
  • 文档页数:21

下载文档原格式

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

数据结构《实验1》实验报告

实验项目1:线性表存储及运算

学号1209030317 姓名王丰生课程号实验地点指导教师时间

评语:

按时完成实验;实验内容和过程记录完整;回答问题完整、正确;实验报告的撰写认真、格式符合要求;无抄袭的行为。

成绩教师签字

线性表链式存储(双向链表)插入、删除运算

1、预习要求:线性表的插入、删除相关概念及运算,完成线性表元素的插入、删除。

2、实验目的:

(1)了解线性表的插入、删除相关概念;

(2)理解线性表的插入、删除过程和结构定义;

(3)掌握算法转换为程序的过程中的变化。

3、实验内容及要求:

(1)分别建立包含10个数据元素的链式存储线性表;

(2)从键盘输入一个数据元素,插入到线性表中第k(包含0号位置)个位置;

(3)从键盘输入一个数据元素关键字或位置k(包含1号位置),从线性表中删除相应数据元素;

(4)给出程序及插入、删除前和插入、删除后线性表结果。

4、实验设备(环境)及要求

硬件:支持 Intel Pentium Ⅱ及其以上 CPU ,内存 128MB 以上、硬盘 1GB 以上容量的微机。

软件:配有 Windows98/2000/XP 操作系统,安装 Visual C++ 。

5、实验时间:6学时

6、该文档的文件名不要修改,存入<学号> <姓名> 命名的文件夹中

7、该表中的数据只需填空,已有内容不要修改

实验结果(运行结果界面及源程序,运行结果界面放在前面):图1.0 菜单栏

图1.1 功能1 输出链表中所有元素(截图部分缺省)

图1.2 功能以递归方式逆向输出链表中的所有元素(截图部分缺省)图1.3 功能计算双向链表的长度(截图部分缺省)

图1.4 功能在链表中查找第K个元素(截图部分缺省)

图1.5 功能在链表中查找符合查找关键字 (学号)的元素(截图部分缺省)

图1.6 功能在链表中插入新元素到第k个元素后面(截图部分缺省)

图1.7 功能删除链表中第k个结点(截图部分缺省)

图1.9 功能把链表中第k个结点移至第一个(截图部分缺省)

图1.10 功能把链表中第i到第j个结点删除(截图部分缺省)

代码

#define STUDENT EType

#define HeadEType int

#include

#include

#include

using namespace std;

struct STUDENT //学生类的定义

{

char number[11];

char name[10];

char sex[3];

int age;

char place[25];

};

struct DoubleChainNode // 结点定义

{

EType data;

DoubleChainNode *plink;

DoubleChainNode *nlink;

};

struct HeadNode // 表头结点

{

HeadEType Hdata;

DoubleChainNode *first;

};

typedef HeadNode *DoubleChainList;

// 构造一个空双向链表

void CreatDoubleChainList(DoubleChainList &L) {

L=new HeadNode;

L->first=NULL;

}

// 逐个地输出链表L中的数据元素

void OutputDoubleChainList(DoubleChainList &L) {

DoubleChainNode *current=L->first;

cout<<"L->first--》";

while (current)

{

current=current->nlink ;

cout<<"nlink"<<"--------->";

}

cout<<"NULL"<

current=L->first;

cout<<" ";

while (current)

{

cout<data.number<<" ";

current=current->nlink ;

}

cout<

current=L->first;

cout<<" ";

while (current)

{

cout<<<" ";

current=current->nlink ;

}

cout<

current=L->first;

cout<<" ";

while (current)

{

cout<data.sex<<" ";

current=current->nlink ;

}

cout<

current=L->first;

cout<<" ";

while (current)

{

cout<data.age<<" ";

current=current->nlink ;

}

cout<

current=L->first;

cout<<" ";

while (current)

{

cout<data.place<<" ";

current=current->nlink ;

}

cout<

}

// 返回双向链表L中数据元素结点数

int LengthDoubleChainList(DoubleChainList &L)

{