顺序线性表实现

项目相关代码在码云托管

#include "list.h"
#include
using namespace std;

//构造函数
list::list(int size):msize(size)
{
    mplist=new Coordinate[size];
    mlength=0;
}
//析构函数
list::~list()
{
    delete[] mplist;
    mplist= NULL;
}
//清空list
void list::ClearList()
{
    mlength=0;
}
//判断list是否为空
bool list:: IsEmpty()
{
    if(mlength==0)
        return true;
    else
    {
        return false;
    }
}
//返回list的当前长度
int list::ListLength()
{
    return mlength;
}
//获取指定的元素
bool list::GetElem(int i,Coordinate* e)
{
    if(i<0||i>mlength-1)
        return false;
    *e=mplist[i];
    return true;
}
//定位元素在list中所处的位置
int list::LocateElem(Coordinate *e)
{
    for (int i = 0; i < mlength; i++)
    {
        if(*e==mplist[i])
        {
            return i;
        }
    }
    return -1;  
}
//获取元素的前驱元素
bool list::PriorElem(Coordinate *current,Coordinate *pre)
{
    int i=LocateElem(current);
    if(i==0||i==-1)
        return false;
    else
    {
        *pre=mplist[i-1];
        return true;
    }
}
//获取元素的后置元素
bool list::NextElem(Coordinate *current,Coordinate *next)
{
    int i=LocateElem(current);
    if(i==0||i==-1)
        return false;
    else
    {
        *next=mplist[i+1];
        return true;
    }
}
//遍历list中的元素 打印
void list::ListTraverse()
{
    for (int i = 0; i < mlength; i++)
    {
        cout<mlength)
    {
        return false;
    }
    if(mlength==msize)
    {
        msize+=10;
        Coordinate *temp=new Coordinate[msize];
        for (int k = 0; k < mlength; k++)
        {
            temp[k]=mplist[k];
        }
        delete[] mplist;
        mplist=temp;
    }
    for (int k = mlength-1; k >= i; k--)
    {
        mplist[k+1]=mplist[k];

    }
    mplist[i]=*e;
    mlength++;
    return true;
}
//删除list中的元素
bool list::ListDelete(int i,Coordinate *e)
{
    if(i<0||i>=mlength)
    {
        return false;
    }
    *e=mplist[i];
    for (int k = i; k < mlength; k++)
    {
        mplist[k]=mplist[k+1];
    }
    mlength--;
    return true;
}

你可能感兴趣的:(顺序线性表实现)