C++顺序表的基本操作

C++顺序表的基本操作
1.由a的n个元素建立顺序表
2.初始化顺序表
3.销毁顺序表
4.判断顺序表是否是空表,若为空返回TRUE,否则返回FALSE
5.求顺序表的长度
6.输出顺序表
6.在顺序表的第i个位置前,插入元素x,表满返回-1,成功返回1,无法插入返回0
7.获取顺序表的第i个元素的值,若第i个元素的值存在则将其赋值给m,返回TRUE,否则返回FALSE
8.按元素值查找,若在顺序表中查找到元素x,择返回x第一次出现的序号,否则返回0
9.删除顺序表的第i个元素,成功删除返回TRUE,没有成功删除返回FALSE

int const Maxsize = 40;
typedef int DateType;
typedef struct  
{
    DateType data[Maxsize];
    int length;

}SeqList;

void Creat_SeqList(SeqList*  L,DateType a[],int n )//由a的n个元素建立顺序表
{
    int i;
    L = (SeqList*)malloc(sizeof(SeqList));
    for (i = 0; i < n;i++)
    {
        L->data[i] = a[i];
    }
    L->length = n;
}

SeqList* Init_SeqList(SeqList* L)//初始化顺序表
{
    L = (SeqList*)malloc(sizeof(SeqList));
    L->length = 0;
    return L;
}

void Destroy_SeqList(SeqList* L)//销毁顺序表
{
    free(L);
}

bool SeqList_IsEmpty(SeqList* L)//判断顺序表是否是空表,若为空返回TRUE,否则返回FALSE
{
    return(L->length == 0);
}

int SeqList_Length(SeqList* L)//求顺序表的长度
{
    return(L->length);
}

void Disp_SeqList(SeqList* L)//输出顺序表
{
    int i;
    for (i = 0; i < L->length; i++)
    {
        cout << L->data[i] << endl;
    }
}

int Insert_SeqList(SeqList* L,int i,DateType x )//在顺序表的第i个位置前,插入元素x,表满返回-1,成功返回1,无法插入返回0
{
    if (L->length==Maxsize)//表满无法插入
    {
        cout << "顺序表已满,无法插入" << endl;
        return -1;
    }
    else if (i<0||i>L->length)//检查插入的位置是否正确
    {
        cout << "插入位置错误" << endl;
        return 0;
    } else//在第i个元素之前插入元素x
    {
        int j;
        for (j = i; j < L->length;)
        {
            L->data[++j] = L->data[i++];
        }
        L->data[j] = x;
        return 1;
    }
}
bool Get_SeqList_Elem(SeqList* L,int i,DateType m)//获取顺序表的第i个元素的值,若第i个元素的值存在则将其赋值给m,返回TRUE,否则返回FALSE
{
    if (i>0&&ilength)//成功找到第n个元素的值
    {
        m=L->data[i];
        return true;
    }
    else
    {
        cout <<"找不到第" <"个元素"<< endl;
        return false;
    }
}

int Indexof_SeqList_Elem(SeqList* L, DateType x)//按元素值查找,若在顺序表中查找到元素x,择返回x第一次出现的序号,否则返回0
{
    for (int i = 1; i < L->length;i++)
    {
        if (x==L->data[i])
        {
            return i+1;
        }
    }
    cout << "没有查找到" << x << endl;
    return 0;
}

bool Deleat_SeqList_Elem(SeqList* L,int i)//删除顺序表的第i个元素,成功删除返回TRUE,没有成功删除返回FALSE
{
    if (i > 0 && i < L->length)
    {
        for (int j = i; j < L->length; j++)
        {
            L->data[j++] = L->data[++i];

        }
        return true;
    }
    else return false;
}

你可能感兴趣的:(数据结构)