文档介绍:南阳理工学院
数据结构 (C 语言版 )上机实验指导书
软件学院·软件工程
目 录
实验 1 线性表应用
实验 2 栈和队列的应用 .......................................................................14
实验 3 线性表应用 ...............................................................................27
实验 4 图论及其应用 ...........................................................................46
实验 5 查找
实验 6 排序 ...........................................................................................64
实验 1 线性表应用
一、实验目的
3,了解和掌握线性表顺序存储和链式存储在计算机中的表示,基本操做在计算机中的实
2,能够利用线性表结构对实际问题进行分析建模,利用计算机求解。
1,能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。
二、实验内容及步骤
1、利用程序设计语言分别实现顺序表和链表的抽象数据类型。
2、掌握程序分文件(头文件和实现文件)书写的方式。
3、分别用顺序表和链表实现课本算法 :合并两个非递减有序序列,并对其时间性能做
出分析。
三、实验步骤与调试过程
以线性表来描述一元多项式, 储存结构采用单链表, 每个结点储存的多项式中某一项的
系数和指数, 建立单链表时指数高的结点列于指数低的结点之后, 即线性表的元素按指数递
增有序排列。
四、实验结果
五、疑难小结
当线性表的长度变化较大, 难以估计其存储规模, 另外对线性表频繁进行插入和删除操
作时,则采用链表作为存储结构可能会更好一些。在实际应用中应该考虑以下因素: (1) 应
有利于运算的实现; (2) 应有利于数据的特性; (3) 应有利于软件环境。
六、主要算法和程序清单
顺序表的非递减数列合并
#include<> /* 包含输入输出头文件 */
#define ListSize 100
typedef int DataType;
typedef struct
{
DataType list[ListSize];
int length;
}SeqList;
void InitList(SeqList *L)
/* 将线性表初始化为空的线性表只需要把线性表的长度 length 置为 0*/
{
L->length=0; /* 把线性表的长度置为 0*/
}
int ListEmpty(SeqList L)
/* 判断线性表是否为空,线性表为空返回 1,否则返回 0*/
{
if(==0) /* 判断线性表的长度是否为 9*/
return 1; /* 当线性表为空时,返回 1;否则返回 0*/
else
return 0;
}
int GetElem(SeqList L,int i,DataType *e)
/* 查找线性表中第 i 个元素。查找成功将该值返回给 e,并返回 1 表示成功;否则返回 -1 表
示失败。