|
《数据结构》商品货架管理系统源代码,用c语言描述,更专业一些,用到栈与队列
以下是一个用C语言描述的商品货架管理系统的源代码示例,其中使用了栈和队列数据结构:
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #define MAX_SIZE 100
- // 定义商品结构体
- typedef struct {
- int id;
- char name[50];
- float price;
- } Item;
- // 定义栈结构体
- typedef struct {
- Item items[MAX_SIZE];
- int top;
- } Stack;
- // 初始化栈
- void initStack(Stack* stack) {
- stack->top = -1;
- }
- // 判断栈是否为空
- bool isStackEmpty(Stack* stack) {
- return stack->top == -1;
- }
- // 判断栈是否已满
- bool isStackFull(Stack* stack) {
- return stack->top == MAX_SIZE - 1;
- }
- // 入栈
- void push(Stack* stack, Item item) {
- if (isStackFull(stack)) {
- printf("Stack is full. Cannot push item.\n");
- return;
- }
- stack->top++;
- stack->items[stack->top] = item;
- }
- // 出栈
- Item pop(Stack* stack) {
- if (isStackEmpty(stack)) {
- printf("Stack is empty. Cannot pop item.\n");
- Item emptyItem = {0, "", 0.0};
- return emptyItem;
- }
- Item item = stack->items[stack->top];
- stack->top--;
- return item;
- }
- // 定义队列结构体
- typedef struct {
- Item items[MAX_SIZE];
- int front;
- int rear;
- } Queue;
- // 初始化队列
- void initQueue(Queue* queue) {
- queue->front = 0;
- queue->rear = 0;
- }
- // 判断队列是否为空
- bool isQueueEmpty(Queue* queue) {
- return queue->front == queue->rear;
- }
- // 判断队列是否已满
- bool isQueueFull(Queue* queue) {
- return (queue->rear + 1) % MAX_SIZE == queue->front;
- }
- // 入队列
- void enqueue(Queue* queue, Item item) {
- if (isQueueFull(queue)) {
- printf("Queue is full. Cannot enqueue item.\n");
- return;
- }
- queue->items[queue->rear] = item;
- queue->rear = (queue->rear + 1) % MAX_SIZE;
- }
- // 出队列
- Item dequeue(Queue* queue) {
- if (isQueueEmpty(queue)) {
- printf("Queue is empty. Cannot dequeue item.\n");
- Item emptyItem = {0, "", 0.0};
- return emptyItem;
- }
- Item item = queue->items[queue->front];
- queue->front = (queue->front + 1) % MAX_SIZE;
- return item;
- }
- // 主函数
- int main() {
- Stack stack;
- initStack(&stack);
- Queue queue;
- initQueue(&queue);
- // 入栈示例
- Item item1 = {1, "Item 1", 10.0};
- push(&stack, item1);
- Item item2 = {2, "Item 2", 20.0};
- push(&stack, item2);
- // 出栈示例
- Item poppedItem = pop(&stack);
- printf("Popped item: %d, %s, %.2f\n", poppedItem.id, poppedItem.name, poppedItem.price);
- // 入队列示例
- Item item3 = {3, "Item 3", 30.0};
- enqueue(&queue, item3);
- Item item4 = {4, "Item 4", 40.0};
- enqueue(&queue, item4);
- // 出队列示例
- Item dequeuedItem = dequeue(&queue);
- printf("Dequeued item: %d, %s, %.2f\n", dequeuedItem.id, dequeuedItem.name, dequeuedItem.price);
- return 0;
- }
复制代码 这个示例代码实现了一个商品货架管理系统,使用了栈和队列数据结构。栈用于管理商品的入栈和出栈操作,队列用于管理商品的入队列和出队列操作。你可以根据实际需求进行扩展和修改。
代码运行结果如下:
Popped item: 2, Item 2, 20.00
Dequeued item: 3, Item 3, 30.00
|
|