考纲要求:在算法实现方面要求,能够根据实际问题的需求来决定采用何种存储结构并给出具体的算法,如:插入、删除满足条件的链表节点,在链表上排序等。
1,线性表的顺序表示和实现
1.1 初始化
1. 初始化线性表 L(参数用引用)
Status InitList_Sq(SqList &L){
//构造一个空的顺序表 L
L.elem=new ElemType[MAXSIZE]; //为顺序表分配空间
if(!L.elem) exit(OVERFLOW); //存储分配失败
L.length=0; //空表长度为 0
return OK;
}
2.初始化线性表 L (参数用指针)
Status InitList_Sq(SqList *L){ //构造一个空的顺序表 L
L-> elem=new ElemType[MAXSIZE]; //为顺序表分配空间
if(! L-> elem)
exit(OVERFLOW); //存储分配失败
L-> length=0; //空表长度为 0
return OK;
}
1.2 取值
1.取值(根据位置 i 获取相应位置数据元素的内容) 获取线性表 L 中的某个数据元素的内容
int GetElem(SqList L,int i,ElemType &e) {
if (i>L.length) return ERROR; //判断 i 值是否合理,若不合理,返回 ERROR
e=L.elem[i-1]; //第 i-1 的单元存储着第 i 个数据
return OK;
}
可以看出顺序表的读取是随机存储的。
1.3 查找
在线性表 L 中查找值为 e 的数据元素
int LocateELem(SqList L,ElemType e) {
for (i=0;i< L.length;i++)
if (L.elem[i]==e) return i+1;
return 0;
}
1.4 插入
插入(插在第 i 个结点之前)
【算法步骤】
(1)判断插入位置 i 是否合法。
(2)判断顺序表的存储空间是否已满。
(3)将第 n 至第 i 位的元素依次向后移动