공유 스택

1530 단어 창고공유
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef int dataType;
#define MAXSIZE 8

typedef struct shareStack
{
    dataType data[MAXSIZE];
    int leftTop;
    int rightTop;
}shareStack;

void initshareStack(shareStack *s)
{
    s->leftTop=-1;
    s->rightTop=MAXSIZE;
    memset(s->data, 0, sizeof(int)*MAXSIZE);
}

void push(shareStack *s,int e,int stackType)
{
    if (s->leftTop+1==s->rightTop)
    {
        return;
    }
    if (stackType==1)
    {
        s->leftTop++;
        s->data[s->leftTop]=e;
    }
    if (stackType==2) {
        s->rightTop--;
        s->data[s->rightTop]=e;
        printf("%d",e);
    }
}
void pop(shareStack *s,int *e,int stackType)
{
    if (stackType==1)
    {
        if (s->leftTop==-1)
        {
            return;
        }
        *e=s->data[s->leftTop];
        s->leftTop--;
    }
    if (stackType==2)
    {
        if (s->rightTop==MAXSIZE)
        {
            return;
        }
        *e=s->data[s->rightTop];
        s->rightTop++;
    }
}

int main(void)
{
    shareStack s;
    initshareStack(&s);
    
    int temp;
    printf("Push Order:
");     for (int i=0; i<8; i++) {         push(&s, i, 2);     }     printf("
");     printf("Pop Order:
");     for (int i=0; i<8; i++) {         pop(&s, &temp, 2);         printf("%d",temp);     }     printf("
");     return 0; }

좋은 웹페이지 즐겨찾기