线性表的顺序实现

mac2024-02-01  55

#include<iostream> //using namespace std; // 线性表的顺序存储结构 const int MaxListSize = 100; class List { private: int data[MaxListSize]; int size; // 元素个数 public: List(){ size = 0; } // 构造一个空线性表 void Clear() { size = 0; // 清空 } bool IsEmpty(); //判断是否为空,若为空,返回true,否则返回false int GetElem(int i); // 返回地i个元素的值 int Locate(int e); // 返回第一个与e匹配的元素的位序 int Prior(int e); // 返回e的前驱 int Next(int e); // 返回e的后继 void Insert(int i, int e); // 在表中的第i个位置插入新元素e int Delete(int i); // 删除第i个元素 int Length() { return size; } void print(); // 输出线性表中的元素值 }; bool List::IsEmpty() { if (size == 0) { return true; } return false; } int List::GetElem(int i) { if(i < 1 || i > size) { std::cout << "位置不正确" << std::endl; exit(0); } else { return data[i - 1]; } } void List::print() { if(size == 0) { std::cout << "空表,无元素"; exit(0); } for (int i = 0; i < size; i++) { std::cout << data[i] << " "; } std::cout << std::endl; } void List::Insert(int i, int e) { //在顺序表的第i个元素之前插入新的元素e // 从数组中下标为i-1的元素后移 // i 的合法范围是 1 <= i <= size + 1 if(i < 1 || i > size + 1 || size >= MaxListSize) { std::cout << "插入不成功" << std::endl; exit(0); } for (int j = size - 1; j >= i - 1; j--) { data[j + 1] = data[j]; } data[i - 1] = e; // 插入元素 size++; } int List::Delete(int i) { if(i < 1 || i > size) { std::cout << "删除位置不正确" << std::endl; exit(0); } int e = data[i - 1]; for(int j = i - 1; j < size - 1; j++) { data[j] = data[j + 1]; } size--; return e; } int List::Locate(int e) { int i = 1; while(i <= size && data[i - 1] != e) { i++; } if(i > size) { return 0; // 没有找到 } return i; } int main() { int a[8] = {3, 6, 9, 12, 15, 18, 21, 24}; List t; for(int i = 0; i < 8; i++) { t.Insert(i + 1, a[i]); } t.Insert(9, 99); t.Insert(10, 45); t.Insert(1, 6969); int index = t.GetElem(10); std::cout << index << std::endl; t.print(); return 0; }
最新回复(0)