顺序队列(sequence queue)

本文介绍了一个简单的序列队列实现方法,使用C语言编程,并提供了初始化、入队、出队、获取队首元素及判断队列是否为空等基本操作。

在C语言中,我们可以使用数组来实现简单的栈(后进先出LIFO,Last In First Out)和队列(先进先出FIFO,First In First Out)。这里提供基本操作的示例代码: **栈(Sequence Stack)** ```c #include <stdio.h> #define MAX_SIZE 50 typedef struct { int top; int arr[MAX_SIZE]; } Stack; // 初始化栈 void init(Stack* stack) { stack->top = -1; } // 判断栈是否满 int isFull(Stack* stack) { return stack->top == MAX_SIZE - 1; } // 判断栈是否空 int isEmpty(Stack* stack) { return stack->top == -1; } // 入栈 void push(Stack* stack, int value) { if (isFull(stack)) { printf("Stack Overflow!\n"); return; } stack->arr[++stack->top] = value; } // 出栈 int pop(Stack* stack) { if (isEmpty(stack)) { printf("Stack Underflow!\n"); return -1; } return stack->arr[stack->top--]; } // 获取栈顶元素(查看,不弹出) int peek(Stack* stack) { if (isEmpty(stack)) { printf("Stack is empty.\n"); return -1; } return stack->arr[stack->top]; } int main() { Stack s; init(&s); push(&s, 1); // 入栈1 push(&s, 2); // 入栈2 printf("Top element is: %d\n", peek(&s)); // 查看栈顶元素 printf("%d popped from stack.\n", pop(&s)); // 出栈并打印 return 0; } ``` **队列Sequence Queue)** ```c #include <stdio.h> #define MAX_SIZE 50 typedef struct { int front; int rear; int arr[MAX_SIZE]; } Queue; // 初始化队列 void init(Queue* queue) { queue->front = queue->rear = -1; } // 判断队列是否满 int isFull(Queue* queue) { return queue->rear == (queue->front + 1) % MAX_SIZE; } // 判断队列是否空 int isEmpty(Queue* queue) { return queue->front == queue->rear; } // 入队 void enqueue(Queue* queue, int value) { if (isFull(queue)) { printf("Queue Overflow!\n"); return; } queue->arr[(queue->rear + 1) % MAX_SIZE] = value; queue->rear = (queue->rear + 1) % MAX_SIZE; } // 出队 int dequeue(Queue* queue) { if (isEmpty(queue)) { printf("Queue Underflow!\n"); return -1; } int value = queue->arr[queue->front]; queue->front = (queue->front + 1) % MAX_SIZE; return value; } int main() { Queue q; init(&q); enqueue(&q, 1); // 入队1 enqueue(&q, 2); // 入队2 printf("Front element of the queue is: %d\n", dequeue(&q)); // 出队并打印 return 0; } ``` **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值