資料結構 稀疏運算器

2021-10-21 08:50:24 字數 2040 閱讀 2772

#include

#include

#include

#define len sizeof(poly)

typedef

struct termpoly,

*link;

intlocateelem

(link p, link s, link &q)

;void

createpolyn

(link &p,

int m)

;//建立多項式

void

printpolyn

(link p)

;//輸出多項式

intcmp

(link a, link b)

;link addpolyn

(link pa, link pb)

;//多項式相加

link subpolyn

(link pa, link pb)

;//多項式相減

link reverse

(link p)

;//逆置多項式

intmain()

break

;case

'-':

break;}

return0;

}int

locateelem

(link p, link s, link &q)

//遍歷鍊錶p,每乙個結點與s比較指數,若相同,q指向相同指數項的結點,返回1,若不相同,根據s所指指數大小在鍊錶p中的位置來確定q的指向結點,返回0

else

if(s->zs == p1->zs)

else}if

(!p1)

}void

createpolyn

(link &p,

int m)

///建立帶頭結點的鍊錶, 且無論按什麼順序輸入,或是有相同指數項最終在多項式中都是公升冪順序

else q->xs+

=s->xs;

//有相同指數項 }}

void

printpolyn

(link p)

//列印顯示多項式

printf

("\n");

}int

cmp(link a, link b)

//比較兩結點指數大小,根據情況返回不同值

link addpolyn

(link pa, link pb)

//pa,pb均指向頭結點 兩個多項式相加得乙個新多項式,並且返回新多項式的頭結點的指標

break

;case0:

//若比較兩項的指數相等,則將兩項係數相加後得到的項放入頭結點為newp的鍊錶中 ,且p,q同時向後遍歷

p = p->next;

q = q->next;

}break

;case1:

//若指數:qbreak;}

} pc->next=p?p:q;

//鏈入pa或pb的剩餘項

return newp;

//返回新多項式的頭指標

}link subpolyn

(link pa, link pb)

///兩個多項式相減得乙個新多項式,並且返回新多項式的頭結點的指標相減就是先將減數中每一項的係數變為負,再將兩個多項式相加

q=pb->next;

while

(p&&q)

break

;case0:

p = p->next;

q = q->next;

}break

;case1:

break;}

} pc->next=p?p:q;

return newp;

}link reverse

(link p)

///用頭插法逆置鍊錶,使多項式由降冪變成公升冪順序或使多項式由公升冪變成降冪順序

return head;

//返回鍊錶逆置後的頭結點

}

資料結構 稀疏矩陣的加減運算

思路 首先是要了解矩陣的加減運算法則,即同坐標的進行加減 所以只需要將兩個矩陣中相同的點進行加減,不同的只需要在三元陣列中,要乙個新的空間進行儲存即可 includeusing namespace std typedef struct node node void initlist node int...

資料結構 稀疏矩陣

稀疏矩陣 矩陣中有效資料的個數遠遠小於無效資料的個數,則可以稱之為稀疏矩陣 如果還像以前那樣將每個稀疏矩陣的資料都儲存起來,則會造成記憶體的很大程度的浪費,所以應用特別的儲存方式。稀疏矩陣的壓縮儲存 使用 三元組儲存每乙個有效資料,三元組按原矩陣中的位置,以行優先順序先後順序依次存放。矩陣的轉置 將...

資料結構 稀疏矩陣

簡單的說,設矩陣amn中有s個非零元素,若s遠遠小於矩陣元素的總數,則稱a為稀疏矩陣。s與m x n的比稱為矩陣的稀疏因子。當用陣列儲存稀疏矩陣中的元素時,僅有少部分的空間被利用,造成空間的浪費,為了節省儲存空間,可以採用一種壓縮的儲存方法來表示稀疏矩陣。由於非零元素的分布一般是沒有規律的,因此在儲...