📄 listiterator.h
字号:
//#include<iostream.h>
#include <assert.h>
#include"iterator.h"
//#include"list.h"
//#include"link.h"
template<class T>class List;
template<class T>class Link;
template<class T>class listIterator:public iterator<T>{
public:
listIterator(List<T> &aList);
virtual int init();
virtual T operator()();
virtual int operator!();
virtual int operator++();
virtual void operator=(T value);
void removeCurrent();
void addBefore(T newValue);
void addAfter(T newValue);
protected:
Link<T> *currentLink;
Link<T> *previousLink;
List<T> &theList;
};
template<class T>
listIterator<T>::listIterator(List<T> &aList):theList(aList){
init();
}
template<class T>
int listIterator<T>::init(){
previousLink=0;
currentLink=theList.ptrtofirstLink;
return currentLink!=0;
}
template<class T>
T listIterator<T>::operator()(){
assert(currentLink!=0);
return currentLink->value;
}
template<class T>
void listIterator<T>::operator=(T val){
assert(currentLink!=0);
currentLink->value=val;
}
template<class T>
void listIterator<T>::removeCurrent(){
assert(currentLink!=0);
if(previousLink==0)
theList.ptrtofirstLink=currentLink->ptrtonextLink;
else
previousLink->ptrtonextLink=currentLink->ptrtonextLink;
delete currentLink;
currentLink=0;
}
template<class T>
int listIterator<T>::operator++(){
if(currentLink==0)
if(previousLink==0)
currentLink=theList.ptrtofirstLink;
else
currentLink=previousLink->ptrtonextLink;
else
previousLink=currentLink;
currentLink=currentLink->ptrtonextLink;
return currentLink!=0;
}
template<class T>
int listIterator<T>::operator!(){
if(currentLink!=0)
return 1;
if(previousLink!=0)
return previousLink->ptrtonextLink!=0;
return theList.ptrtofirstLink!=0;
}
template<class T>
void listIterator<T>::addBefore(T val){
if(previousLink)
previousLink=previousLink->insert(val);
else{
theList.List<T>::add(val);
previousLink=theList.ptrtofirstLink;
}
}
template<class T>
void listIterator<T>::addAfter(T val){
if(currentLink!=0)
currentLink->insert(val);
else if(previousLink!=0)
previousLink->insert(val);
else theList.List<T>::add(val);
}
//#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -