1. 程式人生 > >線性表——順序表(Coordinate)

線性表——順序表(Coordinate)

#ifndef LIST_H
#define LIST_H
#include"Coordinate.h"

class List
{
public:
	List(int size);
	~List();
	void CleanList();
	bool ListEmpty();
	int ListLength();                                    //獲取線性表長度
	bool GetElem(int i,Coordinate *e);                        //獲取指定元素
	int LocateElem(Coordinate *e);                            //尋找第一個滿足e的資料元素的位序
	bool PriorElem(Coordinate *currentElem,Coordinate *preElem);    //獲取指定元素的前驅
	bool NextElem(Coordinate *currentElem,Coordinate *nextElem);    //獲取指定元素的後繼
	bool ListInsert(int i,Coordinate *e);                     //在第i個位置插入元素
	bool ListDelete(int i,Coordinate *e);                     //刪除第i個位置的元素
	void ListTraverse();                                 //遍歷線性表

private:
	Coordinate *m_pList;
	int m_iSize;
	int m_iLength;
};


#endif#include"List.h"
#include
using namespace std;

List::List(int size)
{
	m_iSize=size;
	m_pList=new Coordinate[m_iSize];
	m_iLength=0;
}


List::~List()
{
	delete[] m_pList;
	m_pList=NULL;
}

//直接將m_iLength設為0,此時list中的資料還是存在的,但是已經被忽略了,
//再有資料的時候直接插入將其覆蓋掉就可以了。

void List::CleanList()
{
	m_iLength=0;
}


bool List::ListEmpty()
{
	if(m_iLength==0)
	{
		return true;
	}
	return false;
}


int List::ListLength()
{
	return m_iLength;
}


bool List::GetElem(int i,Coordinate *e)
{
	if(i<0||i>=m_iSize)
	{
		return false;
	}
	else
	{
		*e=m_pList[i];
		return true;
	}	
}


int List::LocateElem(Coordinate *e)
{
	for(int i=0;im_iLength)
	{
		return false;
	}
	for(int k=m_iLength-1;k>=i;k--)
	{
		m_pList[k+1]=m_pList[k];
	}
	m_pList[i]=*e;
	m_iLength++;        //插入資料之後,資料長度會增長
	return true;
}


bool List::ListDelete(int i,Coordinate *e)
{
	if(i<0||i>=m_iLength)
	{
		return false;
	}
	*e=m_pList[i];
	for(int k=i+1;k
using namespace std;

class Coordinate
{
	//輸出運算子過載
	friend ostream &operator<<(ostream &out,Coordinate &coor);
public:
	Coordinate(int x=0,int y=0);
	void printCoordinate();
	bool operator==(Coordinate &coor);

private:
	int m_iX;
	int m_iY;
};

#endif#include"Coordinate.h"
#include
using namespace std;

Coordinate::Coordinate(int x,int y)
{
	m_iX=x;
	m_iY=y;
}

void Coordinate::printCoordinate()
{
	cout<<"("<m_iX==coor.m_iX&&this->m_iY==coor.m_iY)
	{
		return true;
	}
	return false;
}#include
#include
#include"List.h"
#include

#include"Coordinate.h"
using namespace std;

/****************************************************************************************/
/**線性表--順序表**/

//   3  5  6
//其中假設指定元素是5,那麼前驅就是3,後繼就是6。

//bool InitList(List **list);                                    //建立線性表
//void DestroyList(List *list);                                  //銷燬線性表
//void CleanList(List *list);                                    //清空線性表
//bool ListEmpty(List *list);                                    //判斷線性表是否為空
//int ListLength(List *list);                                    //獲取線性表長度
//bool getElem(List *list,int i,Elem *e);                        //獲取指定元素
//int locateElem(List *list,Elem *e);                            //尋找第一個滿足e的資料元素的位序
//bool PriorElem(List *list,Elem *currentElem,Elem *preElem);    //獲取指定元素的前驅
//bool NextElem(List *list,Elem *currentElem,Elem *nextElem);    //獲取指定元素的後繼
//bool ListInsert(List *list,int i,Elem *e);                     //在第i個位置插入元素
//bool ListDelete(List *list,int i,Elem *e);                     //刪除第i個位置的元素
//void ListTraverse(List *list);                                 //遍歷線性表

/****************************************************************************************/
int main(void)
{
	//3 5 7 2 9 1 8

	Coordinate e1(3,5);
	Coordinate e2(5,7);
	Coordinate e3(6,8);

	Coordinate temp(0,0);

	List *list1=new List(10);
	list1->ListInsert(0,&e1);
	list1->ListInsert(1,&e2);
	list1->ListInsert(2,&e3);

	list1->ListTraverse();

	list1->~List();
	system("pause");
	return 0;
}

以上內容來源於慕課網。