C++类和对象应用实例一链表

#include<iostream>
using namespace std;
class List;
class Item{
	public:
		friend class List;
	private:
		Item(int d=0){
			data=d;
			next=0;
		}
	    Item *next;
	    int data;
}; 
class List{
	public :
		List(){
			list = 0;
		}
		List(int d){
			list = new Item(d);
		}
		int print();
		int insert(int d=0);
		int append(int d=0);
		void cat(List &il);
		void reverse();
		int length();
	private :
		Item *end();
		Item  *list;
};
int List::print() {
	if(list==0) {
		cout<<"empty\n";
		return 0;
	}
	cout<<"(";
	int cnt=0;
	Item *pt=list;
	while(pt){
		if(++cnt%40==1&&cnt!=1) cout<<endl;
		cout<<pt->data<<" ";
		pt=pt->next;
	}
	cout<<")\n";
	return cnt;
}
int List::insert(int d){
	Item * pt =new Item(d);
	pt->next=list;
	list=pt;
	return d;
}
int List::append(int d){
	Item * pt = new Item(d);
	if(list==0) list=pt;
	else (end())->next=pt;
	return d;
}
Item * List::end(){
	Item *prv,*pt;
	for(prv=pt=list;pt;prv=pt,pt=pt->next) ;
	return prv;
}
void List::cat(List& il){
	Item * pt = il.list;
	while(pt){
		append(pt->data);
		pt=pt->next;
	}
}
void List::reverse(){
	Item *pt,*prv,*tmp;
	prv=0;
	pt=list;
	list=end();
	while(pt!=list){
		tmp=pt->next;
		pt->next=prv;
		prv=pt;
		pt=tmp;
	}
	list->next=prv;
}
int List::length(){
	int cnt=0;
	Item * pt = list;
	for(;pt;pt=pt->next,cnt++) ;
	return cnt;
}
int main(){
	List list1;
	list1.print();
	for(int i=0;i<18;i++){
		list1.insert(i);
	}
	list1.print();
	list1.reverse();
	list1.print();
}
上一篇:安装tomcat 证书


下一篇:Percona-toolkit工具详解