以下是一个基本的顺序栈的C语言实现示例:
#include<stdio.h>
#include<stdlib.h>
#defineMAX_SIZE100
typedefstruct{
intdata[MAX_SIZE];
inttop;
}Stack;
voidinitStack(Stack*s){
s->top=-1;
}
intisEmpty(Stack*s){
returns->top==-1;
}
intisFull(Stack*s){
returns->top==MAX_SIZE-1;
}
voidpush(Stack*s,intvalue){
if(isFull(s)){
printf("Stackisfull\n");
return;
}
s->top++;
s->data[s->top]=value;
}
intpop(Stack*s){
if(isEmpty(s)){
printf("Stackisempty\n");
return-1;
}
intvalue=s->data[s->top];
s->top--;
returnvalue;
}
intpeek(Stack*s){
if(isEmpty(s)){
printf("Stackisempty\n");
return-1;
}
returns->data[s->top];
}
intmain(){
Stackstack;
initStack(&stack);
push(&stack,10);
push(&stack,20);
push(&stack,30);
printf("Topelement:%d\n",peek(&stack));
printf("Poppedelement:%d\n",pop(&stack));
printf("Poppedelement:%d\n",pop(&stack));
printf("Poppedelement:%d\n",pop(&stack));
printf("Isstackempty:%s\n",isEmpty(&stack)?"true":"false");
return0;
}
这段代码定义了一个基本的顺序栈数据结构,包括初始化栈、判断栈是否为空或满、入栈、出栈、获取栈顶元素的操作。在main函数中,进行了栈的初始化、入栈、出栈等操作,并打印了一些信息。
您可以根据自己的需求对该代码进行修改和扩展。