一元多項式的乘法與加法運算(超詳細!!)


最近在學數據結構!,給我整的寢食不安,別問我為什么,我就想禿個頭而已......生活太難了,我寫的代碼也很復雜,但是我翻閱了很多其他網站上的相同題目,好些個博主和我的代碼量差不多,但是我感覺基本意思都差不了多少,可能我的時間復雜度還有空間復雜度更高,你們就看個思路就行,但是我們還是要說一下這個讓我搞了四五個小時二百多行的鏈表代碼。我沒有在PTA上驗證,自己的運行結果是對的,所以算是寫一下文章記錄一下自己寫的心路歷程吧!!!!(本文自我感覺是針對一些平常感覺到自己的邏輯清楚,但是總是寫不出來的那種人,其實我就是!!但是小蘇也在努力改變!555~)

話不多說,見代碼!<個人推薦用vscode去編寫,別問我為什么,純粹是因為他的界面逼格高,哈哈哈哈哈>

 

 

圖一:創建一個結構體,然后typedef重新定義一下

 

 圖二:定義一個CreateList方法,可以讓我們創建一個不帶頭結點的並且直接在函數內部體現輸入的,這里解答一些小伙伴們的疑惑(就是怎么創建鏈表這件事)之前我也一直很懵哈,但是我寫了好多代碼之后,就是錯了又錯,原因找了又找,然后就找到了他的這種實質:LIstNode s = (ListNode)malloc(sizeof(struct Node));這段代碼而言,就是創建了單個結點,這個結點擁有data,exp,next指針的屬性,然后這只是鏈表當中的其中的一個結點,並不意味着這個鏈表已經創建完了。

還有就是在這兒解釋一下頭結點是干啥的,頭結點就是一個沒有值得空的結點,(頭結點也是擁有和結點一樣的屬性,但是不對他們的屬性進行賦值)但是他擁有的next屬性可以當做指針,就是為了方便在循環中進行方便運算,也方便插入刪除操作,所以說,如果你懂,頭結點有沒有無所謂說實話。

 圖三:proudct計算一元多項式的乘積,再添加結點的過程中,需要對已生成鏈表中的exp值進行查詢,如果有,證明存在重復結點,不添加但更新相同exp的值,直接下一輪;

 

 

 圖四:看到這兒,你會不會心想,這博主是個der吧!一個ADD函數寫這么多行!!!我tm一個數組十幾行代碼給你搞定!,確實數組特別簡單,但是我就是單純的想提升一下自己鏈表的實力哈哈哈哈。這個ADD函數就是先添加有相同指數的結點,然后在新生成的鏈表中進行查重,如果不重復則添加list1中的結點,list2也是相同的辦法,可能我這個辦法不是特別好,但是也是一種思路,怎么說呢,僅供參考!

 

哎,到這兒有人問了,你寫這么多,你還得排序吧!你說對了!哈哈哈

 

 圖五:到這兒就不多講了,寶寶們你們自己看看代碼吧,我到點了,要去上課了,哈哈哈哈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM