下面是一个简单的顺序栈的实现,包含了插入、删除和取栈顶元素等基本操作:#include <stdio.h>#define MAXSIZE 100typedef struct { int data[MAXSIZE]; int top;} SqStack;// 初始化栈void InitStack(SqStack *stack) { stack->top = -1; // 栈为空时,top为-1}// 判断栈是否为空int IsEmpty(SqStack *stack) { return stack->top == -1;}// 判断栈是否已满int IsFull(SqStack *stack) { return stack->top == MAXSIZE - 1;}// 插入元素int Push(SqStack *stack, int value) { if (IsFull(stack)) { printf("栈已满,无法插入元素\n"); return 0; } stack->data[++stack->top] = value; return 1;}// 删除元素int Pop(SqStack *stack) { if (IsEmpty(stack)) { printf("栈已空,无法删除元素\n"); return 0; } stack->top--; return 1;}// 取栈顶元素int GetTop(SqStack *stack) { if (IsEmpty(stack)) { printf("栈已空,无栈顶元素\n"); return 0; } return stack->data[stack->top];}// 输出栈的元素void PrintStack(SqStack *stack) { if (IsEmpty(stack)) { printf("栈为空\n"); return; } printf("栈的元素为:"); for (int i = 0; i <= stack->top; i++) { printf("%d ", stack->data[i]); } printf("\n");}int main() { SqStack stack; InitStack(&stack); Push(&stack, 1); Push(&stack, 2); Push(&stack, 3); Push(&stack, 4); PrintStack(&stack); // 输出:栈的元素为:1 2 3 4 Pop(&stack); Pop(&stack); PrintStack(&stack); // 输出:栈的元素为:1 2 int top = GetTop(&stack); printf("栈顶元素为:%d\n", top); // 输出:栈顶元素为:2 return 0;}
注意,这只是一个简单的顺序栈实现,没有考虑栈的动态扩容等情况。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 |