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

#define ERROR -1 typedef int ElementType; typedef int Position; struct SNode { ElementType *Data; Position Top1, Top2; int MaxSize; }; typedef struct SNode *Stack;

Stack CreateStack(int MaxSize); bool Push(Stack S, ElementType X, int Tag); ElementType Pop(Stack S, int Tag);

Stack CreateStack(int MaxSize) { Stack S = (Stack)malloc(sizeof(struct SNode)); S->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType)); S->Top1 = -1; S->Top2 = MaxSize; S->MaxSize = MaxSize; return S; }

bool Push(Stack S, ElementType X, int Tag) { if (S->Top2 - S->Top1 == 1) { printf("Stack Full\n"); return false; } if (Tag == 1) { S->Data[++(S->Top1)] = X; } else if (Tag == 2) { S->Data[--(S->Top2)] = X; } return true; }

ElementType Pop(Stack S, int Tag) { if (Tag == 1) { if (S->Top1 == -1) { printf("Stack 1 Empty\n"); return ERROR; } return S->Data[(S->Top1)--]; } else if (Tag == 2) { if (S->Top2 == S->MaxSize) { printf("Stack 2 Empty\n"); return ERROR; } return S->Data[(S->Top2)++]; } return ERROR; }

C语言实现双栈:在一个数组中模拟两个堆栈

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

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