南郵OJ 1005 多項式加法(二)

2021-07-11 17:43:41 字數 2111 閱讀 1013

一、首先,這個多項式是乙個鍊錶,多項式的每一項是鍊錶乙個節點,那麼可以想到兩種情況:

1)多項式只有一項或者是多項式的最後一項,那麼這個節點就只需要有係數和指數兩個元素,且不需要指向下 乙個節點。

2)多項式的其中一項,那麼這個節點就需要有係數、指數以及指向下乙個節點的指標。

class  node

node (int c, int e, node * next):coef(c),exp(e) //含有指向下乙個節點的建構函式

}

另外節點要有插入的功能,所以節點類中要有公有成員函式insert()函式:

node  *  insert(int c, int e)

二、鍊錶是由節點構成的,且鍊錶要有新增節點、輸出鍊錶以及鍊錶相加的功能。

class  nodelist

三、由於物件是類,對於輸出操作符不能直接輸出節點類,所以我們要做乙個運算子過載。

ostream & operator << (ostream & out, const node & val)

整個思路即為上面的三大塊,現在一塊一塊的分開分析。

第一塊,鍊錶元素節點:

class  node 

node (int c, int e, node * next):coef(c),exp(e) //含有指向下乙個節點的建構函式

node * insert (int c, int e) //在節點後插入乙個節點

friend class nodelist; //鏈結要操作節點

friend ostream & operator << (ostream &, const node &); //節點的輸出用到節點的私有成員

}

第二塊:鍊錶

class nodelist

;nodelist :: nodelist()

nodelist::~nodelist()

delete thelist;

}void nodelist:: addnode(istream & in)

else

count ++;

} if (count == 0) }

void nodelist:: output (ostream & out )const

m = thelist->link;

for (;m!= thelist; m=m->link)

m = thelist->link;

if (k==1&& m->coef == 0)

if (k==i)

for (j =0; jlink;

}out << *m;

m=m->link;

for (;m!=thelist;m=m->link)

else if (m->coef < 0)

}cout << endl;

}void nodelist::listadd(nodelist & r)

if (p->exp == q->exp)

else

}else

q1 = q1->insert(p->coef,p->exp);

p=p->link; }}

ostream & operator <<(ostream & out, const nodelist & x)

istream & operator >> (istream & in, nodelist & x)

nodelist & operator + (nodelist & a, nodelist & b )

第三塊:運算子過載,輸出物件是節點類

ostream & operator << (ostream & out, const node & val)

return out;

} if (val.coef == -1)

return out;

} else

return out;

}}

OJ 多項式加法

複習了一下stl,寫完才想起來可以用map,量 3,orz 提交時遇到一次presentation error,oj的空格輸出實在是太隨性。思路是分別對兩組輸入進行排序,再通過k1,k2兩個迭代器匯入新的容器 注意 容器為空時,begin 與end 返回相同 容器為空與容器不為空時,begin 返回...

noj 1005 多項式加法

對於輸入,由於是按指數遞減輸入的,故我們只需按照輸入順序進行儲存即可。對待乙個輸入 1.如果當前多項式為空,那麼將此項放入第一項 2.如果當前多項式不為空 3.如果有指數相同的項,那麼將此項與指數相同的項合併,如果係數變為0,則將此項刪除。4.如果沒有指數相同的項 那麼此項的指數一定比當前所有項的指...

多項式加法(二維陣列)

題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 2x6 3x5 12x3 6x 20 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,...