链表,迭代器运用

构建一个工人类,含姓名,年龄,薪金;并用STL中的链表list管理该类对象,通过迭代器访问输出各节点对象的数据成员,并利用链表的merge算法将两链表合并在一起,然后输出合并后的链表节点对象

#include "pch.h"
#include 
#include
#include
using namespace std;
//每个链表内的类对象个数可以用#define N 3来限定,这样后期更改更方便

class worker {
	char name[10];
	int age;
	double salary;
public:
	worker(){}
	void setdata(char *name,int age, double wage) {
		strcpy_s(this->name, strlen(name) + 1, name);
		this->age = age;
		this->salary = wage;
	}
	void display() {
		cout << "工人姓名:" << name << "\t"
			<< "工人年龄:" << age << "\t"
			<< "工人工资:" << salary << "\n";
	}
};
int main()
{
	char name[10];
	int age;
	double salary;
	int i;
	worker worker1[4];
	worker worker2[4];
	listw1, w2;
	list::iterator iter;
	for (i = 1; i <= 3; i++) {
		cout << "请输入worker1第" << i << "个工人数据" << "\n";
		cin >> name >> age >> salary;
		worker1[i].setdata(name, age, salary);
	}
	//类对象赋值
	for (i = 1; i <= 3; i++) {
		cout << "请输入worker2第" << i << "个工人数据" << "\n";
		cin >> name >> age >> salary;
		worker2[i].setdata(name, age, salary);
	}
	for (i = 1; i <= 3; i++) {
		w1.push_back(&worker1[i]);
		w2.push_back(&worker2[i]);
	}
	//列表赋值
	cout << "合并前w1链表:" << "\n";
	for (iter = w1.begin(); iter != w1.end(); iter++)
		(*iter)->display();
	cout << "合并前w2链表:" << "\n";
	for (iter = w2.begin(); iter != w2.end(); iter++)
		(*iter)->display();
	w1.merge(w2);
	
	//节约内存的话,可以加
	//while(!w2.empty()){
	//w2.pop_back();},用以释放链表w2
	
	cout << "合并后链表:" << "\n";
	for (iter = w1.begin(); iter != w1.end(); iter++)
		(*iter)->display();
	return 0;
}

你可能感兴趣的:(STL)