OJ_复数集合

题干

OJ_复数集合_第1张图片

C++实现

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
using namespace std;


struct Complex {
	int re;
	int im;
	//构造函数
	Complex(int _re, int _im) {//注意参数名字必须不同
		re = _re;
		im = _im;
	}
};

//结构体不支持小于号运算符,所以我们要自定义<运算符(运算符重载)
bool operator<(Complex lhs, Complex rhs) {
	if (lhs.re * lhs.re + lhs.im * lhs.im < rhs.re * rhs.re + rhs.im * rhs.im) {
		return true;
	}
	else {
		return false;
	}
}

int main() {
	int n;
	scanf("%d", &n);
	priority_queue<Complex> pqueue;
	for (int i = 0; i < n; i++) {
		char actionArr[30];
		scanf("%s", actionArr);
		string action = actionArr;
		if (action == "Pop") {
			if (pqueue.empty()) {
				printf("empty\n");
			}
			else {
				printf("%d+i%d\n", pqueue.top().re, pqueue.top().im);
				pqueue.pop();
				printf("SIZE = %d\n", pqueue.size());
			}
		}
		else if (action == "Insert") {
			int re, im;
			scanf("%d+i%d", &re, &im);//格式化输入
			Complex c(re, im);
			pqueue.push(c);
			printf("SIZE = %d\n", pqueue.size());
		}
	}
}

你可能感兴趣的:(数据结构与算法,c语言,算法,c++)