某商店的仓库中,对电视机按其价格从低到高建立 一个单链表,链表的 每个结点指出同样价格的电视机的台数。现有m 台价格为n元的电视机入库,请编写c++算法完成仓库的进货管理。
时间: 2024-03-16 13:47:26 浏览: 17
好的,根据您的需求,我会给出一个C++的算法来完成仓库的进货管理。
首先,我们需要定义一个节点结构体来存储电视机的价格和台数信息:
```c++
struct TV {
int price; // 电视机的价格
int count; // 电视机的台数
TV *next; // 指向下一个节点的指针
};
```
接下来,我们可以定义一个链表类来实现对电视机的管理:
```c++
class TVList {
public:
TVList() {
head = new TV; // 创建头节点
head->next = nullptr;
}
~TVList() {
TV *p = head;
while (p) {
TV *temp = p;
p = p->next;
delete temp;
}
}
void insert(int price, int count) {
TV *p = head;
while (p->next && p->next->price < price) {
p = p->next;
}
if (p->next && p->next->price == price) {
p->next->count += count; // 如果已经有相同价格的电视机,则将台数相加
} else {
TV *newTV = new TV;
newTV->price = price;
newTV->count = count;
newTV->next = p->next;
p->next = newTV; // 插入新节点
}
}
void print() {
TV *p = head->next;
while (p) {
std::cout << "Price: " << p->price << ", Count: " << p->count << std::endl;
p = p->next;
}
}
private:
TV *head;
};
```
在上面的链表类中,我们定义了一个`insert()`函数来插入新的电视机,如果已经有相同价格的电视机,则将其台数相加;如果没有,则创建新的节点并插入到链表中。同时,我们还定义了一个`print()`函数用于打印出所有电视机的价格和台数信息。
最后,我们可以在主函数中使用上述链表类来完成仓库的进货管理:
```c++
int main() {
TVList tvList; // 创建链表
int m, n;
std::cout << "请输入进货信息(m台价格为n元的电视机):" << std::endl;
std::cin >> m >> n;
while (m) {
tvList.insert(n, m); // 插入新的电视机
std::cin >> m >> n;
}
std::cout << "电视机库存信息:" << std::endl;
tvList.print(); // 打印所有电视机的信息
return 0;
}
```
这样,我们就完成了对仓库的进货管理,并输出了所有电视机的库存信息。