線性表——順序表(Coordinate)
阿新 • • 發佈:2018-12-27
#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; }
以上內容來源於慕課網。