使用c语言实现顺序栈静态划分
时间: 2024-02-21 19:23:27 浏览: 91
你可以使用C语言来实现顺序栈的静态分配。下面是一个简单的示例代码:
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} SeqStack;
// 初始化栈
void initStack(SeqStack *stack) {
stack->top = -1;
}
// 判断栈是否为空
int isEmpty(SeqStack *stack) {
return (stack->top == -1);
}
// 判断栈是否已满
int isFull(SeqStack *stack) {
return (stack->top == MAX_SIZE - 1);
}
// 入栈
void push(SeqStack *stack, int item) {
if (isFull(stack)) {
printf("Stack is full!\n");
return;
}
stack->top++;
stack->data[stack->top] = item;
}
// 出栈
int pop(SeqStack *stack) {
if (isEmpty(stack)) {
printf("Stack is empty!\n");
return -1;
}
int item = stack->data[stack->top];
stack->top--;
return item;
}
// 获取栈顶元素
int peek(SeqStack *stack) {
if (isEmpty(stack)) {
printf("Stack is empty!\n");
return -1;
}
return stack->data[stack->top];
}
int main() {
SeqStack stack;
initStack(&stack);
push(&stack, 1);
push(&stack, 2);
push(&stack, 3);
printf("Top element: %d\n", peek(&stack));
int item = pop(&stack);
printf("Popped element: %d\n", item);
printf("Top element: %d\n", peek(&stack));
return 0;
}
这段代码实现了顺序栈的静态分配。首先定义了一个结构体 SeqStack
,其中包含一个整型数组 data
用于存储栈中的元素,以及一个整型变量 top
用于表示栈顶的索引。然后定义了一系列操作函数来进行栈的初始化、判空、判满、入栈、出栈和获取栈顶元素等操作。
在 main
函数中,首先初始化了一个栈 stack
,然后依次将元素 1、2 和 3 入栈,并打印栈顶元素。接着进行一次出栈操作,并打印出栈的元素和新的栈顶元素。最后返回 0 表示程序正常结束。
注意:这只是一个简单的示例代码,实际应用中可能还需要进行错误处理、动态扩容等操作。
相关推荐















