#include <iostream>
using namespace std;
struct Node {
float coef;
int expn;
Node *next;
};
void Copy(Node *&pc, Node *pa)//把一个链表的内容复制给另一个链表
{
Node *p,*q, *r;
pc = new Node;
pc->next = NULL;
r = pc;
p = pa;
while (p->next != NULL)
{
q = new Node;
q->coef = p->next->coef;
q->expn = p->next->expn;
r->next = q;
q->next = NULL;
r = q;
p = p->next;
}
}
void CreatPolynomial(Node *&head, int n) // 生成带表头结点的单链表,除头结点外另生成n个结点
{
head = (Node *)new Node;
head->coef = 0;
head->expn = 0;
head->next = NULL; // 初始化头结点
cout << "请输入各项系数及指数:" << endl;
Node *p = head;
for (int i = 0; i < n; i++) {
p->next = (Node *)new Node; // 生成新结点,尾插入生成链表
p = p->next;
cin >> p->coef >> p->expn;
p->next = NULL;
}
}
void PrintPolynomial(Node *&head)
{
if (head->next == NULL) // 结果是0时直接输出0
putchar('0');
else {
for (Node *p = head->next; p != NULL; p = p->next) {
if (p != head->next && p->coef >0) // 当p非首项且指向的系数为正时才输出'+'
putchar('+'); // 之前只判定了p->coef