单链表实验报告及程序

  • 格式:doc
  • 大小:1.44 MB
  • 文档页数:17

兰州财经大学

班级:

姓名:

学号:

指导老师: 数据结构与算法实验课程---单链表 目录

一.前言........................................................................................................................................... 2

1.1实验目的 ............................................................................................................................ 2

1.2 实验内容 ........................................................................................................................... 2

1.3 实验环境 ........................................................................................................................... 2

二.需求分析 ................................................................................................................................... 2

2.1线性表 ................................................................................................................................ 2

2.2抽象数据类型线性表定义 ................................................................................................ 2

2.3 线性表的链式表示 ........................................................................................................... 4

2.3.1链接存储方法 .......................................................................................................... 4

2.3.2链表的结点结构 ...................................................................................................... 4

2.3.3头指针head和终端结点指针域的表示 ................................................................ 4

2.3.4单链表类型描述 ...................................................................................................... 5

2.3.5 指针变量和结点变量 .............................................................................................. 5

三.编程实现 ................................................................................................................................... 6

3.1主要函数代码 .................................................................................................................... 6

3.1.1.主程序 ................................................................................................................... 6

3.2.单链表的建立、插入、删除等操作。 ........................................................................ 10

四.测试调试与结果分析 ................................................................................................................ 12

4.1正常测试数据及运行结果 ............................................................................................... 12

五.收获及体会 ............................................................................................................................. 16

六.参考文献 .................................................................................................................................... 16 一.前言

1.1实验目的

掌握单链表的基本操作,插入、删除、查找等算法的实现。

1.2 实验内容

(1)初始化单链表。

(2)在单链表中插入一个新结点。

(3)删除单链表中的某一个结点。

(4)在单链表中查找某结点并返回其位置。

(5)打印输出La中的结点元素值

1.3 实验环境

1、硬件:PC/4G内存/512G硬盘/100M /NIC

2、软件:

操作系统Windows 7

Microsoft Visual Studio 6.0 集成开发环境

VC++6.0

二.需求分析

2.1线性表

1、线性表概念:n个数据元素组成的有限序列。表示为(a1,a2,…,ai,ai+1,…,an)。

2、逻辑特征:

(1)1

(2)元素同构,且不能出现缺项。

2.2抽象数据类型线性表定义

通常采用抽象数据类型研究数据结构。线性表查询数据类型如下:

ADT List {

数据对象:D={ ai | ai ∈ElemSet,i=1,2,...,n, n≥0 }

数据关系:R1={ |ai-1 ,ai∈D, i=2,...,n }

基本操作:

InitList( &L )

操作结果:构造一个空的线性表L。

DestroyList( &L ) 初始条件:线性表L已存在。

操作结果:销毁线性表L。

ListEmpty( L )

初始条件:线性表L已存在。

操作结果:若L为空表,则返回TRUE,否则FALSE。

ListLength( L )

初始条件:线性表L已存在。

GetElem( L, i, &e )

初始条件:线性表L已存在,1≤i≤ListLength (L)

操作结果:用e返回L中第i个元素的值。

LocateElem( L, e, compare( ) )

初始条件:线性表L已存在,compare( )是元素判定函数。

操作结果:返回L中第i个与e满足关系compare( )的元素的位序。若这样的元素不存在,则返回值为0。

操作结果:返回L中元素个数。

PriorElem( L, cur_e, &pre_e )

初始条件:线性表L已存在。

操作结果:若cur_e是L的元素,但不是第一个,则用pre_e 返回它的前驱,否则操作失败,pre_e无定义。

NextElem( L, cur_e, &next_e )

初始条件:线性表L已存在。

操作结果:若cur_e是L的元素,但不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义。

ListTraverse(L, visit( ))

初始条件:线性表L已存在。

操作结果:依次对L的每个元素调用函数visit( )。一旦visit( )失败,则操作失败。

ClearList( &L )

初始条件:线性表L已存在。

操作结果:将L重置为空表。

PutElem( L, i, &e )

初始条件:线性表L已存在,1≤i≤ ListLength (L)

操作结果:L中第i个元素赋值同e的值。

ListInsert( &L, i, e )

初始条件:线性表L已存在,1≤i≤ ListLength (L) +1

操作结果:在L的第i个元素之前插入新的元素e,L的长度增1。

ListDelete(&L, i, &e)

初始条件:线性表L已存在且非空,1≤i≤ ListLength (L)

操作结果:删除L的第i个元素,并用e 返 回其值,L的长度减1。

} ADT List