把顺序栈、链栈、队列的各种运算放在一个C文件中怎么实现
时间: 2024-10-20 17:18:01 浏览: 28
在C语言中,将顺序栈(通常用数组或动态内存分配实现)、链栈(使用链表)和队列(通常使用数组或链接节点)的操作合并到同一个文件中,你需要定义各自的数据结构并提供相应的操作接口。这里我会给出一个简化的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 顺序栈结构体
typedef struct StackArray {
int capacity;
int top;
int* data;
} StackArray;
// 链栈结构体
typedef struct StackLink {
struct Node* top;
struct Node {
int value;
struct Node* next;
} *node;
} StackLink;
// 队列结构体
typedef struct Queue {
int front;
int rear;
int capacity;
int* data;
} Queue;
// 顺序栈操作 (push, pop, peek)
void push(StackArray* stack, int value);
int pop(StackArray* stack);
int peek(StackArray* stack);
// 链栈操作 (push, pop, peek)
void push_link(StackLink* stack, int value);
int pop_link(StackLink* stack);
int peek_link(StackLink* stack);
// 队列操作 (enqueue, dequeue, is_empty)
void enqueue(Queue* queue, int value);
int dequeue(Queue* queue);
bool is_empty(Queue* queue);
// 初始化/销毁数据结构
StackArray* create_stack(int size);
void destroy_stack(StackArray* stack);
StackLink* create_link_stack();
void destroy_link_stack(StackLink* stack);
Queue* create_queue(int size);
void destroy_queue(Queue* queue);
// 示例函数调用
int main() {
// 创建并使用各数据结构...
return 0;
}
// 接下来的代码分别定义这些操作和辅助函数
```
在这个例子中,每个数据结构都有自己的初始化(create_...)、销毁(destroy_...)以及基本操作(push, pop, peek, enqueue, dequeue)。为了保持简洁,我没有包含完整的源码细节,但主要的想法是为每种数据结构创建对应的结构体,然后为它们提供单独的方法。
阅读全文