- 顺序表结构体定义。具体的结构体定义请查看头文件:https://www.cnblogs.com/kxwslmsps/p/16937235.html
typedef status int; // 定义函数结果状态 typedef int etype; // 元素数据类型 #define CAPACITY 10 // 定义初始容量 typedef struct tag_seqList { etype* pbase; //< 表基址 int capacity; //< 表容量 int size; //< 表长度 }mySList;
- 按位置插入元素x,insert
/** * @brief 功能: 在下标index处插入元素x\n * @param[in] plist:表结构指针 * @param[in] index:元素插入的下标 * @param[in] x:待插元素 * @return 返回是否成功插入的结果状态标志 * @retval - OK(1):插入成功 * @retval - ERROR(-1):表结构不存在,插入失败 * @retval - OVERFLOW(-2):表满且扩容失败,插入失败 * @retval - ERR_PARA(-3):index范围不在[0,size],插入失败 */ status sList_insert(mySList* plist, int index, etype x) { if (plist == NULL || plist->pbase == NULL) { return ERROR; } if (index < 0 || index>plist->size)// 可插入的位置取值为[0,size]任一位置 { return ERR_PARA; // 参数pos不符合要求 } int ret = plist->capacity == plist->size; //< 表满 if (ret && OK != sList_expand(plist, 3)) { return OVERFLOW; }// 表满且扩容失败 for (int i = plist->size; i > index; --i) { plist->pbase[i] = plist->pbase[i - 1]; } // i的含义是旧元素被移至新位置的范围[pos+1,size],空出了pos位置 plist->pbase[index] = x; ++plist->size; return OK; }