实验一数据结构顺序表的插入和删除
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一顺序表的操作
1. 实验题目:顺序表的操作
2.实验目的和要求:
1)了解顺
序表的基本概念、顺序表结构的定义及在顺序表上的基本操作(插入、
删除、查找以及线性表合并 )。
2)通过在 Turbo C ( WinTc ,或 visual stdio6 )实现以上操作的 C 语言
代码。
3)提前了解实验相关的知识(尤其是 C 语
言)。
3.实验内容:(二选一)
1) 顺序表的插入算法, 删除算法, 顺序表的合并算法
2) 与线性表应用相关的实例( 自己选择具体实例)
4.部分参考实验代码:
⑴ 顺序表结构的定义:
#include
#define MAXLEN 255
typedef int ElemType;
typedef struct
{ ElemType elem[MAXLEN];
int length;
}sqList;
⑵ 顺序表前插(在第i 号元素前插入一个新的元素)
int ListInsert(sqList *la,int i,int x)
{ int j;
if(i<0||i>la-> length +1)
{ printf( “ n the value of i is wrong! ” );
return 0;
}
if(la-> length +1>=MAXLEN)
{ printf( “ n overflow! ” );
return 0;
}
. for(j=la-> length;j>=i;j--)
la->list[j+1]=la->list[j];
la->list[i]=x;
la-> length ++; return 1;
}
⑶ 顺序表删除
int ListDelete(sqList
*la,int i)
{ if(i<0||i>la->
length
)
{ printf( “ return 0;
n”);
}
for(i;i
la->list[i-1]=la->list[i];
la-> length --;
return 1;
}
5.附录:实验预备知识:
⑴ 复习 C 语言中数组的用法。
⑵ 了解线性表和顺序表的概念,顺序表的定义方法;
线性表是n 个数据元素的有限序列,至于每个数据元素的具体含义,在不同的情况下各不相同。
顺序表是线性表的顺序存储表示,是用一组地址连续的存储单元依次存储线性表的数据元素。
在 C 语言中,顺序表是用数组来实现的。
⑶ 掌握线性表在顺序存储结构上实现基本操作:查找、插入、删除和
合并的算法。
在实现这些算法的时候,要注意判断输入数据的合法性,除此之外还要要注意以下内容:
在实现查找的时候,首先要判断该顺序表是否为空,其次要判断查找后的结果(查到时输出查到的数据,未查到时给出未查到提
示)。
在实现插入的时候,首先要判断该顺序表是否为满,如为满则报错
(此时要注意:顺序表是用数组来实现的,它不能随机分配空
间);如不为满,则需判断要插入的位置是否合法(例如:如果
一个线性表的元素只有10 个,而要在第0 个元素前插入或在第
11 个元素后插入就为不合法)。其次要注意是前插还是后插,两
者是有区别的;最后还要注意插入时各个数据元素移动的次序是从后面依次开始移动。
在实现删除的时候,首先要判断该顺序表是否为空,如为空则报错,如不为空,则需判断要删除的位置是否合法(例如:如果一个线性表的元素只有10 个,而要删除第0 个或第十一个元素就为不合法)。其次还要注意删除时各个数据元素移动的次序是从前面依次开始移动。