项目相关代码在码云托管
#include "list.h"
#include<iostream>
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<<mplist[i].printCoordinate;
}
}
//向list中添加元素
bool list::ListInsert(int i,Coordinate *e)
{
if(i<0||i>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;
}