1 / 23
文档名称:

数据结构实验(精).doc

格式:doc   页数:23页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验(精).doc

上传人:13431315 2016/4/24 文件大小:0 KB

下载得到文件列表

数据结构实验(精).doc

相关文档

文档介绍

文档介绍:1 实验 1 线性表的基本操作一、实验目的 1. 掌握线性表的基本运算。 2. 掌握顺序表存储的概念,学会对顺序存储的数据结构进行操作。 3. 加深对顺序存储数据结构的理解,逐步培养解决问题的编程能力。二、实验内容 1. 编写线性表基本操作函数(1 )初始化线性表 InitList(LIST *L, int ms) (2 )向线性表指定位置插入元素 InsertList(LIST *L, int item, int rc) (3 )删除指定元素值的线性表记录 DeleteList1(LIST *L, int item) (4 )删除指定位置的线性表记录 DeleteList2(LIST *L, int rc) (5 )查找线性表中的元素 FindList(LIST *L, int item) (6 )输出线性表元素 OutputList(LIST *L) 2. 调用上述函数实现下列操作,操作步骤如下: (1 )初始化线性表; (2 )调用插入函数建立一个线性表; (3 )在线性表中寻找指定的元素; (4 )在线性表中删除指定值的元素; (5 )在线性表中删除指定位置的元素; (6 )遍历并输出线性表。注意:每完成一个步骤,必须及时输出线性表元素,以便于观察操作结果。三、参考程序#include<> #include<> #include<> struct LinearList /* 定义线性表结构*/ { int *list; /* 存线性表元素*/ int size; /* 存线性表长度*/ int MaxSize; /*存 list 数组元素个数*/ }; typedef struct LinearList LIST;2 void InitList( LIST *L, int ms ) /* 初始化线性表*/ { if( (L->list =1 (int *)malloc(ms*sizeof(int)) ) == NULL ){ printf( " 内存申请错误!\n" ); exit( 1 );}2 L->size=0; L->MaxSize = ms; } int InsertList( LIST *L, int item, int rc) { /* item: 记录值 rc: 插入位置*/ int i; if(3 L->size>=L-> MaxSize ) /* 线性表已满*/ return -1; if( rc<0) /* 插入位置为 0 --> L->size */ rc= 0; if(4 rc>L->size ) rc= L->size; for( i= L->size - 1;i >= rc; i--) /* 将线性表元素后移*/ 5 L->list[i+1]=L->list[i]; L->list[rc] = item; L->size ++; return 0;} void OutputList( LIST *L ) /* 输出线性表元素*/ { int i; for( i= 0;6 i<L->size ; i++ ) printf( "%d ", L->list[i] ); printf( "\n" ); } int FindList( LIST *L, int item ) /* 返回值>=0 为元素位置, -1 没找到*/ { int i; for( i= 0;i< L->size; i++ ) if(7 L->list[i]==item ) /* 找到相同的元素,返回位置*/ return i; return -1; /* 没找到*/ } int DeleteList1( LIST *L, int item ) { /* 删除指定元素值的线性表记录,返回>=0 :删除成功*/ int i, n; for( i= 0;i< L->size; i++ ) 3 if( item == L->list[i] ) /* 找到相同的元素*/ break; if(i< L->size ){ for( n= i;n< L->size - 1; n++ ) L->list[n] = L->list[n+1]; L->size --; return i;} return -1; } int DeleteList2( LIST *L, int rc)/* 删除指定位置 rc 的线性表记录*/ {8 /* 编写删除指定位置的线性表记录子程序*/ inti ,n; if(rc<L->size) { for(i=0;i<rc;i++) break; for(n= i;n <L->size -1 ;n++) L->list[n]=L->list[n+1]; L->size--;