#include <iostream>
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
class SqList
{
private:
ElemType data[MAXSIZE] = { 0 };
int length=0;
public:
Status GetElem(int i, ElemType* e);
Status AddElem(int i, ElemType* e);
Status DeleteElem(int i);
Status PutElem();
};
Status SqList::GetElem(int i,ElemType *e) {
if (length == 0 || i<1 || i>length)return ERROR;
*e = this->data[i - 1];
return OK;
}
Status SqList::AddElem(int i, ElemType* e)
{
// 判断顺序表是否已满
if (length == MAXSIZE)return ERROR;
if (i > length+1 || i < 1)return ERROR;
if (i <= length) {
//不在尾部依次后移(从后往前)
for (int k = length; k >= i ; k--) {
data[k] = data[k - 1];
}
}
data[i-1] = *e;
length++;
return OK;
}
Status SqList::DeleteElem(int i)
{
if (length == 0)return ERROR;
if (i > length || i < 1)return ERROR;
if (i < length) {
for (int k = i; k <= length; k++) {
data[k - 1] = data[k];
}
}
length--;
return OK;
}
Status SqList::PutElem()
{
for (int i = 0; i < MAXSIZE; i++)std::cout << data[i]<<"——";
std::cout << "length="<<length<<std::endl;
return OK;
}
int main()
{
std::cout << "Hello World!\n";
SqList list;
ElemType e = 4, m = 5;
list.AddElem(1, &e);
list.PutElem();
list.AddElem(1, &m);
list.PutElem();
list.AddElem(1, &e);
list.PutElem();
list.DeleteElem(1);
list.PutElem();
return 0;
}
简单的线性表
最新推荐文章于 2022-02-15 15:42:38 发布