首页 > 代码库 > 共享栈

共享栈

#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:\n");
    for (int i=0; i<8; i++) {
        push(&s, i, 2);
    }
    printf("\n");
    printf("Pop Order:\n");
    for (int i=0; i<8; i++) {
        pop(&s, &temp, 2);
        printf("%d",temp);
    }
    printf("\n");
    return 0;
}


本文出自 “网络学习总结” 博客,请务必保留此出处http://8947509.blog.51cto.com/8937509/1550952

共享栈