⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a.cpp

📁 该软件实现了一个双向链表类
💻 CPP
字号:
#include<iostream.h>
#include<string.h>
class mennode
{
private:
	char *name;
	char *address;
	int salary;
public:
	mennode()
	{
		name=0;
		address=0;
		salary=0;
	}
	mennode(char *x,char*y,int z)
	{
		name=new char[strlen(x)+1];
		address=new char[strlen(y)+1];
		strcpy(name,x);
		strcpy(address,y);
		salary=z;
	}
	setdata(char *x,char*y,int z)
	{
		if(name)
			delete[] name;
		if(address)
			delete[] address;
		name=new char[strlen(x)+1];
		address=new char[strlen(y)+1];
		strcpy(name,x);
		strcpy(address,y);
		salary=z;
	}
	~mennode()
	{
		if(name)
			delete[] name;
		if(address)
			delete[]  address;
		cout<<"destructed"<<endl;
	}
	show()
	{
		cout<<"the name of the person is "<<endl<<name<<endl;
		cout<<"the address of the person is "<<endl<<address<<endl;
		cout<<"the salary of the person is "<<endl<<salary<<endl;
	}
	int isgreat(mennode *a)
	{
		return (a->salary-salary);
	}
	int isequal(mennode *a)
	{
		return (salary==a->salary);
	}
};
class node
{
private:
	mennode *info;
	node *prev,*next;
public:
	node()
	{
	info=0;
	prev=0;
	next=0;
	}
	~node()
	{
		if(info)
			delete info;
		if(prev)
			delete prev;
		if(next)
			delete next;
		cout<<"the object has been destructed"<<endl;
	}
	node(node &x)
	{
		info=x.info;
		prev=x.prev;
		next=x.next;
	}
	mennode*getinfo()
	{
		return info;
	}
	fillmennode(mennode *a)
	{
		info=a;
	}

	friend class list;
};
class list
{
private:
	node *head,*tail;
public:
	list()
	{
		head=0;
		tail=0;
	}
	~list()
	{
		if(head)
			delete head;
		if(tail)
			delete tail;
	}
	addnode(node*a)
	{
		if(head==0)
		{
			head=tail=a;
		    a->prev=a->next=0;
		}
		else
		{
			node*pn;
			pn=head;
			while(pn)
			{
				if(pn->info->isgreat(a->info)<=0)
					break;
				else
					pn=pn->next;
			}
			if(pn==0)
		{
			tail->next=a;
			a->prev=tail;
			tail=a;
			a->next=0;
		}
		else
		{
			if(head==pn)
			{
				a->next=head;
				head->prev=a;
				a->prev=0;
				head=a;
			}
			else
			{
				pn->prev->next=a;
				a->next=pn;
				a->prev=pn;
				pn->prev=a;
			}
		}
		}
	}
	showlist()
	{
		node *p;
		p=head;
		while(p)
		{
			cout<<p->getinfo()->show()<<endl;
			p=p->next;
		}
	}
};
main()
{
   node a,b,e;
   mennode c("weihui","nudt",2000);
   c.show();
   a.fillmennode(&c);
   a.getinfo()->show();
   c.setdata("xiaoming","iiu",2300);
   c.show();
   mennode g;
   g.setdata("xinyan","jnjq",3333);
   b.fillmennode(&g);
   b.getinfo()->show();
   list l;
   l.addnode(&a);
   l.addnode(&b);
   mennode f;
   f.setdata("xy","sd",4442);
   e.fillmennode(&f);
   e.getinfo()->show();
   l.addnode(&e);
   l.showlist();
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -