CS 136-Assignment 8課業解析

題意:咱們將實現一個用於存儲sing的ADT 用於在咱們的購物列表中存儲單個項目數組

     item_create(name,amount,price,priority)在堆內存中建立一個購物項目並返回指向它的指針。詳細規格請參閱shopping.h。請注意,字符串名稱必須複製到shopping item結構中;價格以每金額的美分爲單位。item_clone(item)在堆內存中建立另外一個項的副本並返回指向它的指針。詳細規格請參閱shopping.h。item_read(item)使用輸入的數據建立單個購物項。函數返回正確讀取的購物項目數,即0或1。您能夠假設購物商品的名稱不超過42個字符。請參閱shopping.h以瞭解詳細規格和正確的輸入格式。請注意,參數項是以struct shpg_item(指針指針)的形式給出的:根據C內存模型,考慮這意味着什麼,並檢查main中的正確調用格式。item_destroy(item)從item釋放全部資源。item_combine(dest,source)經過未來源信息合併到dest中,將兩個購物項目組合爲一個。兩個購物商品只有在名稱相同的狀況下才能夠組合在一塊兒(儘管大小寫並不重要!)。當合並兩個項目時,金額相加;價格取兩個金額的平均值;新的優先級是兩個優先級中較高的一個。item_print(item)打印出item。您能夠在printf調用中使用如下格式字符串:「%s:%dx,$%d.%02d,<%d>n」。comp_by_name(i1,i2)比較兩種購物商品的名稱。若是i1在i2以前排序,則函數返回-1;若是i1在i2以後排序,則返回1;若是i1和i2的名稱相同,則返回0。請注意,此函數不考慮大小寫:「Apple」、「Apple」和「Apple」都將被視爲相等。comp_by_priority(i1,i2)比較兩個購物項目的優先級。若是i1在i2以前排序,則函數返回-1;若是i1在i2以後排序,則返回1;若是i1和i2具備相同的優先級,則返回0。對於咱們存儲在堆內存中的每個數據,咱們都必須經過一個指針類型的變量與之交互。例如,當建立struct shpg_項時,咱們經過struct shpg_item與它交互。咱們能夠將這些結構的多個存儲在一個shopping item數組中,該數組的類型爲struct shpg_item。請注意,這些具備兩個間接尋址級別的數組在內存中的存儲方式與您預期的不一樣:對於一個級別,例如int arr[]={1,2,3};,整數值被緊密地壓縮在相鄰的內存單元中。對於兩個級別,例如struct foo*arr,指向struct foo的指針是緊密打包的,可是結構自己能夠位於堆內存中的任何位置。函數

涉及優先級選擇,指針

更多討論能夠+V:abby12468排序

相關文章
相關標籤/搜索