#include"stdafx.h";
template<class T>
class doubleList
{
protected:
struct node
{
T item;
node* prev;
node* next;
}
private:
node* head;
node* last;
long length;
public:
doubleList()
{
head=NULL;
last=NULL;
length=0;
}//default constructor
public:
class iterator
{
friend class doubleList<T>;
protected:
node* nodePtr;
iterator(node* newPtr)
{
nodePtr=newPtr;
}
public:
iterator()
{
}//default constructor
iterator operator++(int)
{
iterator temp;
temp=*this;
nodePtr=(*nodePtr).next;
return temp;
}
iterator operator--(int)
{
iterator temp;
temp=*this;
nodePtr=(*nodePtr).next;
return temp;
}
T operator*()
{
return ((*nodePtr).item);
}
}
iterator begin()
{
return iterator(head);
}//begin
iterator back_begin()
{
return iterator(last);
}
iterator end()
{
return iterator(NULL);
}//end
void push_front(const T &newItem)
{
node* newHead=new node;
newHead->item=newItem;
newHead->next=head;
newhead->prev=NULL;
if(head!=NULL)
{
head->prev=newHead;
head=newHead;
length++;
}
}
void push_back(const T &newItem)
{
node* newLast=new node;
newLast->item=newItem;
newLast->next=NULL;
newLast->prev=last;
if(last!=NULL)
{
last->next=newLast;
last=newLast;
length++;
}
}
void main()
{
doubleList<string> myList;
doubleList<string>::iterator itr;
itr.push_front("enum");
itr.push_front("long");
itr.push_front("string");
itr.push_front("int");
for(itr=myList.begin();itr!=myList.end();itr++)
cout<<"正序输出:"《*itr<<endl;
for(itr=myList.back_begin();itr!=myList.end();itr--)
cout<<"逆序输出:"《*itr<<endl;
Why????囊个解决呢??
}
2 个解决方案
#1
哎呀,发错了;楼主,你仔细看一下,你的class类结构少了 } 。
另外,平时写代码时要注意缩进和匹配,这样的错误就不会犯了,程序读起来也容易。
另外,平时写代码时要注意缩进和匹配,这样的错误就不会犯了,程序读起来也容易。
#2
vc
ctrl+a
然后alt+f8
就会自动缩进的
ctrl+a
然后alt+f8
就会自动缩进的
#1
哎呀,发错了;楼主,你仔细看一下,你的class类结构少了 } 。
另外,平时写代码时要注意缩进和匹配,这样的错误就不会犯了,程序读起来也容易。
另外,平时写代码时要注意缩进和匹配,这样的错误就不会犯了,程序读起来也容易。
#2
vc
ctrl+a
然后alt+f8
就会自动缩进的
ctrl+a
然后alt+f8
就会自动缩进的