链栈c语言实现饮料自助
时间: 2024-11-06 13:20:56 浏览: 21
基于C语言实现的自助贩卖机
在C语言中,我们可以使用链表数据结构模拟饮料自助机的功能,例如跟踪饮料库存、提供选择和结账流程。以下是一个简单的链栈(这里我们假设每个饮料都有一个库存和一个价格)的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Drink {
char name[50];
int stock;
float price;
struct Drink* next;
} Drink;
// 初始化饮料节点
Drink* initDrink(char* name, int stock, float price) {
Drink* drink = (Drink*)malloc(sizeof(Drink));
strcpy(drink->name, name);
drink->stock = stock;
drink->price = price;
drink->next = NULL;
return drink;
}
// 创建饮料链栈
Drink* createDrinkStack() {
Drink* stack = NULL;
return stack;
}
// 添加饮料到链栈
void addDrinkToStack(Drink* stack, Drink* newDrink) {
if (!stack) {
stack = newDrink;
} else {
Drink* temp = stack;
while (temp->next) {
temp = temp->next;
}
temp->next = newDrink;
}
}
// 查询饮料库存
int checkStock(Drink* drink) {
return drink->stock;
}
// 主函数模拟饮料自助过程
int main() {
Drink* stack = createDrinkStack();
// 添加一些饮料
Drink* coke = initDrink("可乐", 10, 3.0);
addDrinkToStack(stack, coke);
Drink* water = initDrink("水", 20, 2.0);
addDrinkToStack(stack, water);
// 模拟顾客购买
printf("请选择饮料:\n");
for (Drink* drink = stack; drink; drink = drink->next) {
printf("%d. %s - %f 元\n", drink->stock, drink->name, drink->price);
}
return 0;
}
```
在这个示例中,我们创建了一个链式存储饮料的栈,并通过模拟菜单展示库存。用户可以选择饮料,但实际购买和库存更新在此简化版本中并未实现。
阅读全文