共计 1177 个字符,预计需要花费 3 分钟才能阅读完成。
题意:咱们将实现一个用于存储 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