[Coursera]数据结构基础_Week2_线性表_Q2

#include <iostream>

using namespace std;

class Node {
public:
	Node *next_;
	int coeff_;
	int power_;
};

class List {
public:
	List(void) { head_ = new Node;  head_->next_ = NULL; }
	~List(void) { delete head_; }
	void Insert(int coeff, int power) {
		Node *pnode = head_;
		while (pnode->next_ != NULL && pnode->next_->power_ > power) {
			pnode = pnode->next_;
		}
		if (pnode->next_ != NULL && pnode->next_->power_ == power) {
			pnode->next_->coeff_ += coeff;
		}
		else {
			Node *nnode = new Node;
			nnode->coeff_ = coeff;
			nnode->power_ = power;
			nnode->next_ = pnode->next_;
			pnode->next_ = nnode;
		}
	}
	void Output(void) {
		Node *pnode = head_->next_;
		while (pnode != NULL) {
			if (pnode->coeff_ != 0)
				cout << "[ " << pnode->coeff_ << " " << pnode->power_ << " ] ";
			pnode = pnode->next_;
		}
		cout << endl;
	}
private:
	Node *head_;
};

List *_list;

int main(void) {
	int i, j;
	int num, coeff, power;
	string s;
	cin >> num;
	_list = new List[num];
	for (i = 0; i<num; i++) {
		cin >> coeff >> power;
		while (power >= 0) {
			_list[i].Insert(coeff, power);
			cin >> coeff >> power;
		}
		getline(std::cin, s);

		cin >> coeff >> power;
		while (power >= 0) {
			_list[i].Insert(coeff, power);
			cin >> coeff >> power;
		}
		getline(std::cin, s);
	}
	for (i = 0; i<num; i++)
		_list[i].Output();
	delete[] _list;
}
转自网络。此题测试数据非常变态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值