資料結構線性表的應用(集合 多項式)

2021-09-28 15:17:02 字數 1173 閱讀 6638

*今天老師提到了集合的運算,我就想起來需要用線性表來進行集合的運算(雖然陣列也可),前不久寫了多項式運算的**,但是核心部分的加減還是有點模糊,決定細緻的再看一下(again)。

演算法有:

void mergelist(list &la, list&lb)}}

時間複雜度o(n*m)

(1)順序有序表的合併(這裡簡述演算法步驟)

①建立乙個表長為m+n的空表lc。

②指標pc初始化,指向lc的第乙個元素。

③指標pa和pb初始化,分別指向la和lb的第乙個元素。

④當指標pa和pb均未到達相應的表尾時,則依次比較pa和pb所指向的元素值,從la或lb中「摘取」元素值較小的結點插入到lc最後。

⑤如果pb已到達lb的表尾,依次將la剩餘的元素插入到lc的最後。

⑥如果pa已到達la的表尾,依次將lb剩餘元素插入到lc的最後。

時間複雜度o(m+n)

(2)鏈式有序表的合併(重點)

上面的時間複雜度都很高,利用鍊錶可以很好的減少複雜度。

直接演算法** :

void mergelist_l(linklist &la,linklist &lb, linklist &lc)

else}}

pc->next = pa?pa:pb;//將非空表的剩餘段插入到pc所指節點之後

delete lb;//釋放lb的頭結點

!!!時間複雜度o(1)

void polyn::

add(linklist &l1,linklist &l2)

else

//係數和為零

}else

if(p1-

>expn>expn)

//l1當前節點的指數值小

else

//l2當前節點指數值小

} p3-

>next=p1?p1:p2;

//插入非空多項式的剩餘段

delete l2;

//釋放l2的頭結點

cout<<

"和為: "

(l1)

;}

多寫,多練,多上機!(嘻嘻)

C 資料結構 DS線性表 多項式相加

對於一元多項式p x p0 p1x p2x2 pnxn,每個項都有係數和指數兩部分,例如p2x2的係數為p2,指數為2。程式設計實現兩個多項式的相加。例如5 x 2x2 3x3,5 x 6x2 4x4,兩者相加結果 8x2 3x3 4x4 其中係數5和 5都是x的0次方的係數,相加後為0,所以不顯示...

POJ 資料結構與演算法 線性表 多項式加法

一開始把這一道題想得太簡單了,直接用乙個50w的陣列結果re.提交人班級 結果記憶體 時間 長度 語言提交時間 mollnn accepted 664kb 17ms 834 b g 3分鐘前 mollnn runtime error 2328kb 8ms448 b g 4小時前 mollnn run...

線性表 實現多項式加法

線性表分為順序表和煉表兩種 這裡就是學習用鍊錶實現多項式加法 用鍊錶表示多項式,並實現多項式的加法運算 輸入格式 輸入在第一行給出第乙個多項式polya的係數和指數,並以0,0 結束第乙個多項式的輸入 在第二行出第乙個多項式polyb的係數和指數,並以0,0 結束第乙個多項式的輸入。輸出格式 對每一...