1. 讲解:
2. C++代码实现:
#include <stdlib.h> #include <iostream> using namespace std; #define MaxSize 10 #define ElemType int typedef struct { ElemType data[MaxSize]; // 数据元素 int length; // 顺序表当前长度 }SqList; // 初始化顺序表 void InitList(SqList& L) { for (int i = 0; i < MaxSize; i++) L.data[i] = 0; // 将所有元素初始化为0 L.length = 0; // 长度初始化为0 } // 按位序插入元素 bool ListInsert(SqList& L, int i, ElemType 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]; // 腾出空间 L.data[i - 1] = e; L.length++; return true; } // 按位序删除元素 bool ListDelete(SqList& L, int i, ElemType& e) { if (i < 1 || i > L.length) return false; // 非法位置读取 e = L.data[i - 1]; for (int j = i; j <= L.length - 1; j++) L.data[j - 1] = L.data[j];// 向前覆盖 L.length--; return true; } // 按位查找 ElemType GetElem(SqList L, int i) { return L.data[i - 1]; } // 按值查找 int LocateElem(SqList L, ElemType e) { for (int i = 0; i < L.length; i++) { if (L.data[i] == e) return i + 1; } return 0; // 没找到则返回0 } int main() { SqList myList; InitList(myList); // 初始化顺序表 // 插入元素 for (int i = 1; i <= 5; i++) { ListInsert(myList, i, i * 10); } // 输出顺序表内容 cout << "顺序表当前内容:" << endl; for (int i = 0; i < myList.length; i++) { cout << myList.data[i] << " "; } cout << endl; // 按位查找并输出 int pos = 3; cout << "第" << pos << "个位置的元素为:" << GetElem(myList, pos) << endl; // 按值查找并输出 ElemType value = 30; pos = LocateElem(myList, value); if (pos != 0) { cout << "值为" << value << "的元素在顺序表中的位置为:" << pos << endl; } else { cout << "未找到值为" << value << "的元素。" << endl; } // 删除元素 ElemType deletedItem; int deletePos = 2; if (ListDelete(myList, deletePos, deletedItem)) { cout << "成功删除第" << deletePos << "个位置的元素,删除的元素为:" << deletedItem << endl; } else { cout << "删除失败,可能是位置非法。" << endl; } // 输出删除元素后的顺序表内容 cout << "删除元素后的顺序表内容:" << endl; for (int i = 0; i < myList.length; i++) { cout << myList.data[i] << " "; } cout << endl; return 0; }