#include <iostream>
using namespace std;
typedef int ElemType; /*指定操作对象为整型*/
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
/* 线性表的动态分配顺序存储结构 */
const LIST_INIT_SIZE=100; /* 线性表存储空间的初始分配量 */
const LISTINCREMENT=10; /* 线性表存储空间的分配增量 */
class SqList{
private:
ElemType *elem;
int length;
int listsize;
public:
Status InitList_Sq (){// 算法2.3 构造一个空的顺序线性表
elem=new ElemType [LIST_INIT_SIZE];
length=0;
listsize=LIST_INIT_SIZE;
return 0;
}
Status ListInsert_Sq( ElemType i, ElemType e) { // 算法2.4
// 在顺序线性表L的第i个元素之前插入新的元素e,
// i的合法值为1≤i≤ListLength_Sq(L)+1
ElemType *p;
if (i < 1 || i > length+1)
return 0; // i值不合法
if (length >= listsize) { // 当前存储空间已满,增加容量
ElemType *newbase = new ElemType[listsize+LIST_INIT_SIZE];
if (!newbase)
return 0; // 存储分配失败
elem = newbase; // 新基址
listsize += LISTINCREMENT; // 增加存储容量
}
ElemType *q = &(elem[i-1]); // q为插入位置
for (p = &(elem[length-1]); p>=q; --p)
*(p+1) = *p;
// 插入位置及之后的元素右移
*q = e; // 插入e
++length; // 表长增1
return 1;
}
};
int main(){
SqList La;
Status j,i;
/*构造LA表*/
La.InitList_Sq();
if( La.InitList_Sq()) /* 创建空表La成功 */
for(j=1;j<=5;j++) /* 在表La中插入5个元素 */
i=La.ListInsert_Sq(j,j);
cout<<"La= "<<i; /* 输出表La的内容 */
return 0;
}