顺序表基本操作 -- 插入删除

Run Settings
LanguageC++
Language Version
Run Command
#include <stdio.h> #define MaxSize 10 // 定义最大长度 /** * 静态顺序表的基本操作 */ typedef struct { int data[MaxSize]; // 用静态的 “数组” 存放数据元素 int length; } SeqList; // 初始化顺序表 void InitList(SeqList &L) { for (int i = 0; i < MaxSize; i++) L.data[i] = 0; // 将所有的元素设置为默认初始值 L.length = 0; // 顺序表初始长度为 0 } // // 数据插入 在位序i的位置插入数据(数组索引 i-1的位置) // void ListInsert(SeqList &L, int i, int e) // { // // 判断 i 的合法值 1<i<length // for (int j = 0; j < L.length; j--) // { // L.data[j] = L.data[j - 1]; // 将第i个元素及之后的元素后移 // } // L.data[i - 1] = e; // 在i的位置插入 e // L.length++; // 长度加 1 // } bool ListInsert(SeqList &L, int i, int e) { if (i < 1 || i > L.length + 1) { return false; } if (L.length >= MaxSize) // 存储空间满了 { return false; } for (int j = L.length; j >= i; j--) { L.data[j] = L.data[j - 1]; // 将第i个元素及之后的元素后移 } L.data[i - 1] = e; // 在i的位置插入 e L.length++; // 长度加 1 return true; } /// @brief /// @param L 要删除的数据表 /// @param i 删除的索引 /// @param e 返回删除的那个数据元素 /// @return bool ListDelete(SeqList &L, int i, int &e) { if (i < 1 || i > L.length) { return false; } e = L.data[i - 1]; for (int j = i; j < L.length; j++) { L.data[j - 1] = L.data[j]; } L.length--; return true; } // 查找 (此处 i为位序) int GetElem(SeqList L, int i) { return L.data[i - 1]; } // 查找第一个元素值等于e的元素,并返回其位序 int LocateElem(SeqList L, int e) { for (int i = 0; i < L.length; i++) { if (L.data[i] == e) { return i + 1; } return 0; } } int main() { SeqList L; // 声明一个顺序表 InitList(L); // 初始化顺序表 printf("%d\n", ListInsert(L, 1, 2)); ListInsert(L, 2, 4); ListInsert(L, 3, 6); ListInsert(L, 4, 8); ListInsert(L, 5, 10); ListInsert(L, 6, 11); ListInsert(L, 7, 12); ListInsert(L, 8, 13); ListInsert(L, 9, 14); for (int i = 0; i < MaxSize; i++) { printf("data[%d]=%d\n", i, L.data[i]); } int e = -1; if (ListDelete(L, 3, e)) printf("已经删除第三个元素,删除元素值为= %d\n", e); else printf("位序 i不合法,删除失败 %d\n", e); printf("\n\n删除后表中保存的值:\n"); for (int i = 0; i < L.length; i++) { printf("data[%d]=%d\n", i, L.data[i]); } LocateElem(L, 11); // 在表 L中,查找值为11的位序 return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines