C语言中顺序栈的实现与表示

 

'''c

 

#include

#include

 

#define MAX_SIZE 100

 

struct Stack {

    int data[MAX_SIZE];

    int top;

};

 

void initializeStack(struct Stack* stack) {

    stack->top = -1;

}

 

int isStackEmpty(struct Stack* stack) {

    return stack->top == -1;

}

 

int isStackFull(struct Stack* stack) {

    return stack->top == MAX_SIZE - 1;

}

 

void push(struct Stack* stack, int value) {

    if (isStackFull(stack)) {

        printf("Stack Overflow\n");

        return;

    }

 

    stack->top++;

    stack->data[stack->top] = value;

}

 

int pop(struct Stack* stack) {

    if (isStackEmpty(stack)) {

        printf("Stack Underflow\n");

        return -1;

    }

 

    int value = stack->data[stack->top];

    stack->top--;

 

    return value;

}

 

int peek(struct Stack* stack) {

    if (isStackEmpty(stack)) {

        printf("Stack is Empty\n");

        return -1;

    }

 

    return stack->data[stack->top];

}

 

void displayStack(struct Stack* stack) {

    if (isStackEmpty(stack)) {

        printf("Stack is Empty\n");

        return;

    }

 

    printf("Stack: ");

    for (int i = stack->top; i >= 0; i--) {

        printf("%d ", stack->data[i]);

    }

    printf("\n");

}

 

int main() {

    struct Stack stack;

    initializeStack(&stack);

 

    push(&stack, 10);

    push(&stack, 20);

    push(&stack, 30);

    push(&stack, 40);

 

    displayStack(&stack);

 

    printf("Top element: %d\n", peek(&stack));

 

    int poppedElement = pop(&stack);

    printf("Popped element: %d\n", poppedElement);

 

    displayStack(&stack);

 

    return 0;

}

 

'''

 

在此实现中,我们定义了一个“堆栈”结构,该结构包含一个数组“data”来存储堆栈的元素,以及一个整数“top”来跟踪顶部元素的位置。“MAX_SIZE”常量表示堆栈的最大容量。

 

“initializeStack”函数通过将“top”设置为 -1 来初始化堆栈,表示空堆栈。“isStackEmpty”和“isStackFull”函数分别检查堆栈是空的还是满的。

 

“push”函数通过递增“top”并将值分配给“data”数组中的相应位置,将元素插入堆栈中。如果堆栈已满,它会打印一条消息,指示堆栈溢出。

 

'pop' 函数删除并返回堆栈的顶部元素。它递减“top”并返回“data”数组中相应位置的值。如果堆栈为空,则打印一条消息,指示堆栈下溢。

 

“peek”函数返回顶部元素的值,而不将其删除。它检查堆栈是否为空,并在这种情况下返回 -1。

 

'displayStack' 函数从上到下打印堆栈的元素。如果堆栈为空,则打印一条消息,指示堆栈为空。

 

在“main”函数中,我们初始化一个堆栈并执行一些堆栈操作来演示功能。我们使用“push”函数插入元素,“peek”函数检索顶部元素,“pop”函数删除元素,使用“displayStack”函数打印堆栈的内容。

 

注意:此实现使用固定大小的数组来表示堆栈。如果堆栈超过“MAX_SIZE”定义的最大容量,则会导致堆栈溢出。

你可能感兴趣的:(C语言专栏,开发语言,c语言,数据结构,算法)