1. 程式人生 > >結構體與鏈表

結構體與鏈表

ber 名稱 post 設計 back san 詳細 容易 總結

#一

題目1.

7-1 查找書籍(20 分)

給定n本書的名稱和定價,本題要求編寫程序,查找並輸出其中定價最高和最低的書的名稱和定價。

輸入格式:

輸入第一行給出正整數n(<10),隨後給出n本書的信息。每本書在一行中給出書名,即長度不超過30的字符串,隨後一行中給出正實數價格。題目保證沒有同樣價格的書。

輸出格式:

在一行中按照“價格, 書名”的格式先後輸出價格最高和最低的書。價格保留2位小數。

1.本題pta提交列表

技術分享圖片

本題代碼

技術分享圖片

2.設計思路

技術分享圖片

以上↑↑↑↑答題思路

技術分享圖片

3.本題調試過程碰到問題及PTA提交列表情況說明
1.如何定義結構體2.比較價格大小後將書籍對應的信息拷貝

第一次提交

技術分享圖片

第一次提交輸入格式錯誤,應是先輸入書名再輸入價格,導致輸入答案錯第二誤。

技術分享圖片

第二次提交,因為直接用scanf輸入書名中不能含空格,所以出現段錯誤。發現後該用試用getchar()函數,一直讀到換行結束。

題目2.

7-3 找出總分最高的學生(15 分)

給定N個學生的基本信息,包括學號(由5個數字組成的字符串)、姓名(長度小於10的不包含空白字符的非空字符串)和3門課程的成績([0,100]區間內的整數),要求輸出總分最高學生的姓名、學號和總分。

輸入格式:

輸入在一行中給出正整數N(≤10)。隨後N行,每行給出一位學生的信息,格式為“學號 姓名 成績1 成績2 成績3”,中間以空格分隔。

1.本題提交列表

技術分享圖片

本題代碼

技術分享圖片

技術分享圖片

2.設計思路

技術分享圖片

↑上答題思路,具體求最高平均分,設計一個循環,定義一個最高分,循環進行比較,最後找到最高分。

3.本題調試過程碰到問題及PTA提交列表情況說明
怎麽講求出來的平均分放入已經定義好的結構體數組中。

第一次提交

技術分享圖片

輸入stydent[i].subject時沒有用&stydent[i].subject,因為定義suject時用的是int函數,所以要加&

第二次提交

技術分享圖片

第二次提交當flag=1時,n應<n-1.

題目3.

7-12 單向鏈表4(10 分)

定義單向鏈表:輸入若幹個正整數(輸入-1為結束標誌),要求按輸入數據的逆序並輸出。

輸入輸出示例:括號內為說明

輸入樣例:

1 2 3 4 5 6 7 -1

1.本題提交列表
技術分享圖片
2.本題代碼

技術分享圖片

2.設計思路

技術分享圖片

1輸入十個數,以指針方式,每輸入一次,指針自加。

2 指針自減一次,即指向最後一個。

3 輸出10次,依次自減,即可達到目的。

3.本題調試過程碰到問題及PTA提交列表情況說明

碰到問題,怎麽使指針進行自加自減。

第一次提交

技術分享圖片

第一次提交答案錯誤是因為沒有弄清循環輸入的條件,當輸入的第一個數不為-1時就應該進入循環輸入。所以應是while(num!=-1)。

#二、代碼互評

互評同學名稱:李彥嬋(沒錯又是她(*^▽^*)!!)

題目.

7-9 查找成績最高的學生(10 分)

編寫程序,從鍵盤輸入 n (n<10)個學生的學號(學號為4位的整數,從1000開始)、成績並存入結構數組中,查找並輸出成績最高的學生信息。

輸入輸出示例:括號內為說明,無需輸入輸出

輸入樣例:

3	(n=3)
1000 85
1001 90
1002 75

我的代碼:

技術分享圖片

彥嬋的:

技術分享圖片

3.我和同學代碼不同在哪裏?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裏出問題。

用的都是結構體且思路差不多,但彥嬋直接定義結構體struct max,s1,而我定義的結構體max中包含詳細定義,彥嬋的程序更加簡潔,而我的程序比較詳細哦,我更喜歡彥嬋的,簡單的程序一目了然出錯也更加容易找出。

三、截圖pta排名

技術分享圖片

四.本周學習總結

1.你學會了什麽?

1.鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。

2.插入操作處理順序:中間節點的邏輯,後節點邏輯,前節點邏輯。按照這個順序處理可以完成任何鏈表的插入操作。

刪除操作的處理順序:前節點邏輯,後節點邏輯,中間節點邏輯。 按照此順序可以處理任何鏈表的刪除操作。 3.結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標誌,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體聲明的變量。 在一般情況下,tag、member-list、variable-list這3部分至少要出現2個。

2.本周的內容,你還不會什麽?

7-10 單向鏈表1(10 分)

鏈表節點定義為: struct Node{ int data; struct Node *next; }

編程實現:輸入一個正整數 repeat (0<repeat<10),做 repeat 次下列運算: 輸入若幹個正整數(輸入-1為結束標誌),建立一個單向鏈表,將其中的奇數值結點刪除後輸出

輸入輸出示例:括號內為說明

本題不知道如何進入循環並且跳出循環,因為開始輸入num需要進入循環,但輸入-1的時候,若num>1,要進入下一個循環,這個點搞得不是很清楚。

3.其他總結

創建鏈表的過程,,真的很復雜,一知半解是創建不出來的!!要完全搞懂還需努力!!

結構體與鏈表