用c++写一个用栈实现的货架管理系统
时间: 2024-05-10 10:14:10 浏览: 8
好的,以下是一个用栈实现的货架管理系统的简单示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct {
char name[20];
int num;
} Shelf;
typedef struct {
Shelf data[MAX_SIZE];
int top;
} Stack;
void init(Stack *s) {
s->top = -1;
}
int is_empty(Stack *s) {
return s->top == -1;
}
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
void push(Stack *s, Shelf shelf) {
if (is_full(s)) {
printf("The stack is full.\n");
return;
}
s->top++;
s->data[s->top] = shelf;
}
Shelf pop(Stack *s) {
if (is_empty(s)) {
printf("The stack is empty.\n");
Shelf empty_shelf = {"", 0};
return empty_shelf;
}
Shelf shelf = s->data[s->top];
s->top--;
return shelf;
}
void print_stack(Stack *s) {
printf("Shelf Stack:\n");
for (int i = s->top; i >= 0; i--) {
printf("%s - %d\n", s->data[i].name, s->data[i].num);
}
}
int main() {
Stack s;
init(&s);
// add some shelves
Shelf shelf1 = {"A", 10};
Shelf shelf2 = {"B", 20};
Shelf shelf3 = {"C", 30};
push(&s, shelf1);
push(&s, shelf2);
push(&s, shelf3);
print_stack(&s);
// remove a shelf
Shelf removed_shelf = pop(&s);
printf("Removed shelf: %s - %d\n", removed_shelf.name, removed_shelf.num);
print_stack(&s);
return 0;
}
```
以上代码中,我们定义了一个 `Shelf` 结构体来表示货架,包含了货架名称和数量两个属性。我们还定义了一个 `Stack` 结构体来表示栈,包含了一个 `data` 数组来存储元素,以及一个 `top` 变量来表示栈顶位置。
在 `init` 函数中,我们将栈顶位置初始化为 `-1`,表示栈为空。在 `is_empty` 和 `is_full` 函数中,我们分别判断栈是否为空和是否已满。在 `push` 函数中,如果栈已满,则输出提示信息;否则将元素入栈。在 `pop` 函数中,如果栈为空,则输出提示信息,并返回一个空的 `Shelf` 对象;否则将栈顶元素出栈,并返回该元素。
最后,在 `main` 函数中,我们创建了一个栈对象 `s`,并添加了三个货架到栈中。然后,我们输出了当前栈中的货架信息,并移除了一个货架。最后,我们再次输出了当前栈中的货架信息,以检查移除操作是否成功。