浙江大学城市学院实验报告
课程名称数据结构基础
实验项目名称实验四线性表的顺序表示和实现
学生姓名专业班级学号
实验成绩指导老师(签名) 日期
实验目的和要求
1、学会定义线性表的动态分配顺序存储结构。
2、掌握线性表的动态分配顺序存储结构及基本操作实现函数。
3、进一步熟悉C语言函数的基本结构,掌握程序中的头文件、实现文件和主文件之间的相互关系及各自的作用。
实验内容
1、编写应用程序(填空),实现可以在顺序表中插入任意给定数据类型(定义为抽象数据类型)数据并求和的功能。要求在主函数中定义顺序表并对该顺序表插入若干个整数类型的数据(正整数),对它们求和并输出。,。要求使用动态内存分配的方式申请数组空间。
请填空完成以下给出的源代码程序并调试通过。
(1) :
typedef struct List{
ElemType *list;
int size;
int MaxSize;
}SeqList;
void InitList(SeqList &L)
{ //初始化线性表
…………
}
void ClearList(SeqList &L)
{ //清除线性表
………………
}
int LengthList(SeqList L)
{ //求线性表长度
………..
}
void TraverseList(SeqList L)
{ //遍历线性表
………………
}
bool InsertList(SeqList &L, ElemType item, int pos)
{ //按给定条件pos向线性表插入一个元素
…….
}
ElemType GetList(SeqList L, int pos)
{ //在线性表L中求序号为pos的元素,该元素作为函数值返回
…………..
}
(2):
#include <>
#include <>
typedef int ElemType;
#define MAXSize 10;
#include ""
void main(void)
{
SeqList myList;
int i=1, x, sum=0, n;
InitList ( myList );
scanf(“%d”, &x);
while ( x!= -1 )
{
if ( InsertList (myList, x , i )==0) {
printf("错误!\n");
return ;
}
i++;
scanf(“%d”, &x);
}
TraverseList(myList);
n = LengthList (myList);
for (i=1; i<=n; i++)
{
x=GetList(myList, i);
sum = sum + x;
}
printf("%d\n ", sum);
ClearList(myList);
}
2、选做部分:编写函数bool DeleteElem(SeqList &L, int min, int max) 实现从顺序表中删除其值在给定值min和max之间(min < max)的所有元素,,。
3、填写实验报告,。
4、 、( ftp://:5000 )自己的文件夹下。
三. 函数的功能说明及算法思路
(包括每个函数的功能说明,及一些重要函数的算法实现思路)
1. 初始化线性表:需要完成动态储存空间的初始分配,并且把线性表置为空。
:将L清空, 动态空间还给系统。
。
:用 for嵌套进行选择排序,并输出。
5. 线性表的插入: 首先判断POS是否有效,否则返回无效。若是,POS==0,是将item插入并保持有序,此时判断item所要插入的位置,并将值赋给POS。pos=-1,此时将pos=+1。接着判断是否空间足够,不够就重新分配大一倍的空间。待插入位置及所有后续位置元素,从后向前依次后移一个位置,把item的值赋给已空出的(下标为pos-1)
线性表的顺序表示和实现 来自淘豆网www.taodocs.com转载请标明出处.