#include <stdio.h> #include <stdlib.h>

#define MAXSIZE 100 // 栈的最大容量

typedef struct { int data[MAXSIZE]; // 存储栈中元素的数组 int top; // 栈顶指针 } SeqStack;

// 初始化顺序栈 void InitStack(SeqStack *stack) { stack->top = -1; // 栈顶指针置为-1,表示栈为空 }

// 判断栈是否为空 int IsEmpty(SeqStack *stack) { return stack->top == -1; }

// 判断栈是否为满 int IsFull(SeqStack *stack) { return stack->top == MAXSIZE - 1; }

// 入栈 void Push(SeqStack *stack, int element) { if (IsFull(stack)) { printf('Stack is full, cannot push element.\n'); return; } stack->top++; // 栈顶指针加1 stack->data[stack->top] = element; // 将元素插入栈顶位置 }

// 出栈 void Pop(SeqStack *stack) { if (IsEmpty(stack)) { printf('Stack is empty, cannot pop element.\n'); return; } stack->top--; // 栈顶指针减1 }

// 取栈顶元素 int GetTop(SeqStack *stack) { if (IsEmpty(stack)) { printf('Stack is empty, cannot get top element.\n'); return -1; } return stack->data[stack->top]; // 返回栈顶元素 }

// 遍历顺序栈 void Traverse(SeqStack *stack) { if (IsEmpty(stack)) { printf('Stack is empty.\n'); return; } printf('Stack elements: '); for (int i = 0; i <= stack->top; i++) { printf('%d ', stack->data[i]); } printf('\n'); }

// 置空顺序栈 void ClearStack(SeqStack *stack) { stack->top = -1; // 栈顶指针置为-1,表示栈为空 }

int main() { SeqStack stack; int choice, element;

InitStack(&stack); // 初始化顺序栈

while (1) {
    printf('1. Push element\n');
    printf('2. Pop element\n');
    printf('3. Get top element\n');
    printf('4. Traverse stack\n');
    printf('5. Clear stack\n');
    printf('0. Exit\n');
    printf('Enter your choice: ');
    scanf('%d', &choice);
    
    switch (choice) {
        case 1:
            printf('Enter element to push: ');
            scanf('%d', &element);
            Push(&stack, element);
            break;
        case 2:
            Pop(&stack);
            break;
        case 3:
            element = GetTop(&stack);
            if (element != -1) {
                printf('Top element: %d\n', element);
            }
            break;
        case 4:
            Traverse(&stack);
            break;
        case 5:
            ClearStack(&stack);
            break;
        case 0:
            exit(0);
        default:
            printf('Invalid choice. Please try again.\n');
            break;
    }
    
    printf('\n');
}

return 0;

}

C语言实现顺序栈:初始化、插入、删除、取值等操作详解

原文地址: https://www.cveoy.top/t/topic/f3yi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录