链表,迭代器运用

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

#include "pch.h"
#include <iostream>
#include<list>
#include<string>
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];
	list<worker*>w1, w2;
	list<worker*>::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;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值