/** * * @param l 线性表指针 * @param len 长度 * @return 1:success?fail */ intincreaseSize(SeqList *l, int len) { int *pInt = l->data; l->data = (int *) malloc(l->maxsize + len * sizeof(int)); //复制 for (int i = 0; i < l->length; ++i) { l->data[i] = pInt[i];//将数据复制到新区域 } l->maxsize = l->maxsize + len;//顺序表的最大长度增加len free(pInt);//释放空间 return1; }
/** * * @param l 线性表指针 * @param i 下标 * @param e 插入元素 * @return */ intlistInsert(SeqList *l, int i, int e) { for (int j = l->length; j >= i; --j) { l->data[j] = l->data[j - 1]; } l->data[i] = e; l->length++; return1; }
/** * * @param l 线性表指针 * @param i 下标 * @param e int 指针,用于接收删除值 * @return */ intlistDelete(SeqList *l, int i, int *e) { if (i < 1 || i > l->length) { return0; } *e = l->data[i - 1]; for (int j = i; j < l->length; j++) { l->data[j - 1] = l->data[j]; } l->length--; return1;
}
/** * 取出下标对应的元素 * @param l 线性表 * @param i 要去除元素下标 * @return 下标对应的元素 */ intgetElem(SeqList l, int i) { return l.data[i - 1]; }
/** * 按值查找,并返回下标 * @param l 线性表 * @param e 要查找元素值 * @return -1表示没有找到 */ intlocateElem(SeqList l, int e) { for (int i = 0; i < l.length; ++i) { if (e == l.data[i]) { return i + 1; } } return-1; }