C++课后习题 联系客服

发布时间 : 星期日 文章C++课后习题更新完毕开始阅读9e4230dc0b4e767f5acfcedc

博学谷——让IT教学更简单,让IT学习更有效 { return data.size(); } };

int main() { Aggregate * aggr = new ConcreteAggregate(); Iterator *it = aggr->createIterator(); for (it->first(); !it->isDone(); it->next()) { cout << *(it->currentItem()) << endl; } delete it; delete aggr; system(\ return 0; }

第十章题目

一、填空题

1、本系统为物流货仓管理系统,系统管理的产品属性有:、、、 和。

2、物流货仓管理系统中操作了两个文件,其中产品信息文件用于保存产品信息,用于记录用户操作。

3、请根据系统中ProductList类描述的信息绘制出系统中链表结构图。 4、物流货仓管理系统产品的排序是依据排序算法实现的。 二、选择题

5、物流货仓管理系统中用于实现用户功能操作的函数是()。 A、Manager类的成员函数InventoryManager() B、Control类的成员函数MainControl() C、Manager类的ReadRecord()函数 D、Manager类的UpdateRecord()函数

6、物流货仓管理系统中用于管理产品信息的数据结构是()。 A、数组 B、队列 C、链表 D、二叉树 三、简答题

7、分析向链表插入节点的函数,根据注释,将程序填写完整。 void ProductList::AddProduct(const Product* ptr) {

博学谷——让IT教学更简单,让IT学习更有效

Product pro;

if (!ptr){ //ptr为nullptr时,需要用户输入产品信息 cout << \请按以下格式输入产品信息:\\n\OUTPUT_HEAD(cout);

//从键盘获取产品信息,存入pro中 INPUT_PRODUCT(cin, pro); }else{ pro = *ptr; //将待插节点的有效内容存入pro中 }

//将待插节点的产品型号、名称、品牌同链表现有节点进行比较

//若存在内容相同的节点,用p记录链表节点地址,否则p为nullptr auto p = IsSameProduct(pro); if (p) {

cout << \您输入的产品名称在系统中已存在,现将信息进行合并!\ cout << \原有信息如下:\ OUTPUT_HEAD(cout); OUTPUT_PRODUCT(cout, p->m_product); //若链表中存在与待插节点信息相同节点,将待插节点的价格、数量与现有链表节 点相应内容合并 int total = p->m_product->iPrice * p->m_product->iCount + pro.iPrice * pro.iCount; p->m_product->iCount += pro.iCount; p->m_product->iPrice = total / p->m_product->iCount; cout << \合并后,信息如下:\ OUTPUT_PRODUCT(cout, p->m_product); cout << endl; return; }

//若链表已存在,在链表尾部插入新节点 if (s_pProductTail) {

//让尾节点的m_product保存新产品对象地址 ;

//创建新的尾节点 s_pProductTail->m_pProductNext = new ProductList(); //尾指针指向新创建的尾节点 ; } }

8、分析对链表节点进行排序的函数,根据注释,将程序填写完整。 void ProductList::SortProductByEType(EType type) {

auto p = s_pProductHead; //让p记录头节点地址

博学谷——让IT教学更简单,让IT学习更有效

ProductList* pTmp;

//按照选择排序思想,对链表节点进行升序排序 for (auto i = p; i->m_pProductNext->m_product;) {

//i节点位置为链表中最前位置,最前位置应该存放属性值最小的节点信息 pTmp = i;

//从i节点之后的节点中寻找属性值最小的节点,将节点地址记录在pTmp指针中 auto j = i->m_pProductNext; while (j->m_product) { }

if (CompareByEType(type, pTmp, j) > 0) ;

j = j->m_pProductNext;

//若链表只有一个节点,直接显示该节点信息,无需排序 if (!p->m_pProductNext) { }

ShowAllProduct(); return;

//若属性值最小的节点(由pTmp指向)没有出现在链表最前位置i上,则交换产品信息

}

Swap(i, pTmp); ;

}

四、简答题

9、编写物流货仓管理系统中ProductList类中释放链表资源的函数。

10、实现链表排序的函数中swap()函数用于实现节点信息交换,请根据链表结构实现swap()

函数。

第十章答案

1、型号名称品牌单价数量 2、日志文件

3、

博学谷——让IT教学更简单,让IT学习更有效 4、选择排序 5、A 6、C 7、

s_pProductTail->m_product = new Product(pro) s_pProductTail = s_pProductTail->m_pProductNext; 8、

pTmp = j;

i = i->m_pProductNext; 9、

void ProductList::DeleteProductList(ProductList*& p) { auto pTmp = p, pList = p; auto& pHead = p; while (pTmp && pTmp->m_pProductNext) { pTmp = pTmp->m_pProductNext; if (pList == s_pProductHead) delete p->m_product; delete p; p = pTmp; } delete pTmp; pHead = nullptr; }

10、

void ProductList::Swap(ProductList* ptr1, ProductList* ptr2) { Product *tmp; tmp = ptr1->m_product; ptr1->m_product = ptr2->m_product; ptr2->m_product = tmp; }