//线性表 //由同类型的数据元素构成的有序序列的线性结构 //线性表中没有元素的时候称为空表 //表起始位置称为表头,表结束的位置称为表尾 # include <iostream> using namespace std; class SubsequenceList { private: int* pData;//指向顺序表 int tail;//指向当前的最后一个元素的后面的下标 int maxSize;//最大长度 public: SubsequenceList(int maxSize) { this->maxSize=maxSize; pData=new int[maxSize]; tail=0; } ~SubsequenceList() { delete [] pData; tail=0; } void showList();//显示整个顺序表 bool insertIntoList(int element,int index);//在指定的下标来插入元素 bool deleteElementByIndex(int index);//通过下标来删除元素 int findElementByIndex(int index);//通过下标查找元素 bool updataElementByIndex(int index,int element);//根据下标来更新内容 int getTail();//返回目前的尾部 int findElementByContent(int element);//通过元素的内容来查找元素 }; bool SubsequenceList::insertIntoList(int element,int index)//插入元素 { if(index>this->tail+1)//在超过当前最大长度的时候,插入失败 { return false; } else { if(index==this->tail)//如果要插在顺序表的最后一个元素的后一个元素 { this->pData[index]=element; this->tail++;//尾部下标后移 return true;//插入成功 } else//插入的下标位于中间部分 { for(int i=this->tail;i>index;i--)//依次向后移动位置 { this->pData[i]=this->pData[i-1]; } this->pData[index]=element;//插入元素 this->tail++;//指向最后元素的下标向后移动 return true; } } } int SubsequenceList::getTail() //返回当前的尾部 { return this->tail; } void SubsequenceList::showList()//显示整个顺序表 { //依次打印出所有的内容 for(int i=0;i<this->tail;i++) { cout<<this->pData[i]<<' '; } cout<<endl; } bool SubsequenceList::deleteElementByIndex(int index)//按照下标来删除元素 { if(index>=this->tail||index<0)//如果要删除不在该顺序表中的元素 { return false;//删除失败 } else { for(int i=index;i<this->tail;i++) { this->pData[i]=this->pData[i+1]; } //移动来删除要删除的位置 this->tail--;//长度减少 return true;//删除成功 } } int SubsequenceList::findElementByIndex(int index)//根据下标查找元素 { if(index<0||index>=this->tail)//如果不在范围 { return -1;//返回-1,查找失败 } else { return this->pData[index];//返回效果 } } bool SubsequenceList::updataElementByIndex(int index,int element)//根据下标来更新数据 { if(index<0||index>=this->tail)//不在范围的话,无法更新失败 { return false; } else { this->pData[index=element]; return true; } } int SubsequenceList::findElementByContent(int element)//根据内容查找对应的信息 { bool isFind=false;//是否找到的标志 int index=-1;//找到的下标 for(int i=0;i<this->tail;i++) { if(this->pData[i]==element)//找到了 { isFind=true; index=i; break; } } if(isFind) { return index; } else { return index; } } int main(void)//测试类 { SubsequenceList* s=new SubsequenceList(100); s->insertIntoList(1,0); s->insertIntoList(2,1); s->insertIntoList(3,2); s->insertIntoList(6,1); s->deleteElementByIndex(0); s->showList(); return 0; }