//list.h
#ifndef LIST_H
#define LIST_H
class List
{
public:
List(int size);
~List();
void ClearList();
bool ListEmpty();
int ListLength();
bool GetElem(int i,int *e);
int LocateElem(int *e);
bool PriorElem(int *currentElem,int *preElem);
bool NextElem(int *currentElem,int *nextElem);
void ListTraverse();
bool listInsert(int i,int *e);
bool ListDelete(int i,int *e);
private:
int *m_pList;
int m_iSize;
int m_iLength;
};
#endif
//lsit.cpp
#include<list.h>
#include<iostream>
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;
}
void List::ClearList(){
m_iLength = 0;
}
bool List::ListEmpty(){
return m_iLength == 0?true:false;
}
int List::List(){
return m_iLength;
}
bool List::GetElem(int i,int *e){
if(i < 0 || i >=m_iSize)
return false;
*e = m_pList[i];
return true;
}
int List::LocateElem(int *e){
for(int i = 0;i < m_iLength;++i)
{
if(*e == m_pList[i])return i;
}
return -1;
}
bool List::PriorElem(int *currentElem,int *preElem){
int temp = LocateElem(*currentElem);
if(temp == -1)
return false;
else{
if(temp == 0)
return false;
else
*preElem = m_pList[temp - 1];
return true;
}
}
bool List::NextElem(int *currentElem,int *nextElem){
int temp = LocateElem(*currentElem);
if(temp == -1)
return false;
else{
if(temp == m_iLength - 1)
return false;
else
*preElem = m_pList[temp + 1];
return true;
}
}
void Lisit::ListTraverse(){
for(int i = 0;i < m_iLength;++i){
cout<<m_pList[i];
}
}
bool List::ListDelete(int i,int *e){
if(i < 0 || i >= m_iLength)
return false;
*e = m_pList[i];
for(k = i + 1;k < m_iLength;;++k){
m_pList[k - 1] = m_pList[k];
}
m_iLength--;
return true;
}