線性表——對順序表的操作
阿新 • • 發佈:2018-12-27
#ifndef LIST_H #define LIST_H class List { public: List(int size); ~List(); void CleanList(); bool ListEmpty(); int ListLength(); //獲取線性表長度 bool GetElem(int i,int *e); //獲取指定元素 int LocateElem(int *e); //尋找第一個滿足e的資料元素的位序 bool PriorElem(int *currentElem,int *preElem); //獲取指定元素的前驅 bool NextElem(int *currentElem,int *nextElem); //獲取指定元素的後繼 bool ListInsert(int i,int *e); //在第i個位置插入元素 bool ListDelete(int i,int *e); //刪除第i個位置的元素 void ListTraverse(); //遍歷線性表 private: int *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 int[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,int *e) { if(i<0||i>=m_iSize) { return false; } else { *e=m_pList[i]; return true; } } int List::LocateElem(int *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,int *e) { if(i<0||i>=m_iLength) { return false; } *e=m_pList[i]; for(int k=i+1;k #include #include"List.h" #include 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 int e1=3; int e2=5; int e3=7; int e4=2; int e5=9; int e6=1; int e7=8; int temp=0; List *list1=new List(10); //cout<<"lenth:"<ListLength()<ListInsert(0,&e1); //cout<<"lenth:"<ListLength()<ListInsert(1,&e2); list1->ListInsert(2,&e3); list1->ListInsert(3,&e4); list1->ListInsert(4,&e5); list1->ListInsert(5,&e6); list1->ListInsert(6,&e7); //list1->ListInsert(3,&e7); //list1->ListDelete(0,&temp); /*if(!list1->ListEmpty()) { cout<<"not empty"<CleanList(); if(list1->ListEmpty()) { cout<<"empty"<ListEmpty();*/ list1->ListTraverse(); //cout<<"#"<GetElem(0,&temp); cout<<"temp:"<LocateElem(&temp)<PriorElem(&e4,&temp); cout<<"前驅:"<NextElem(&e4,&temp); cout<<"後繼:"<~List(); system("pause"); return 0; }
以上內容來源於慕課網。