#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#define MAXSIZE 20
typedef struct
{
int *data;
int top[2]; // 栈顶指针
int bot[2]; // 栈底指针
int stack_size;
} ShareStack;
void Init_Stack(ShareStack *ss)
{
ss->data = (int *)malloc(sizeof(int) * MAXSIZE);
ss->top[0] = -1;
ss->top[1] = MAXSIZE;
ss->bot[0] = -1;
ss->bot[1] = MAXSIZE;
ss->stack_size = MAXSIZE;
}
int IsEmpty(ShareStack ss, int stack_number)
{
return ss.top[stack_number] == ss.bot[stack_number]; // 栈空返回1,不空返回0
}
int IsFull(ShareStack ss)
{
return ss.top[0] + 1 == ss.top[1]; // 栈满返回1,不满返回0
}
int push(ShareStack *ss, int i, int e) // 参数:栈,栈号,入栈元素
{
if (IsFull(*ss))
{
return 0;
}
if (i != 1 && i != 0)
{
return 0;
}
if (i == 0)
{
ss->data[++ss->top[0]] = e;
}
else
{
ss->data[--ss->top[1]] = e;
}
return 1;
}
int pop(ShareStack *ss, int i, int *e)
{
if (IsEmpty(*ss, i))
{
return 0;
}
if (i != 1 && i != 0)
{
return 0;
}
if (i == 0)
{
*e = ss->data[ss->top[0]--];
}
else
{
*e = ss->data[ss->top[1]++];
}
return 1;
}
int GetTop(ShareStack ss, int i, int *e)
{
if (IsEmpty(ss, i))
{
return 0;
}
if (i != 1 && i != 0)
{
return 0;
}
*e = ss.data[ss.top[i]];
return *e;
}
void CleanStack(ShareStack *ss, int i)
{
if (i != 1 && i != 0)
{
return 0;
}
if (i = 0)
{
ss->top[0] = ss->bot[0] = -1;
}
else
{
ss->top[1] = ss->bot[1] = MAXSIZE;
}
}
int main()
{
return 0;
}
【C语言】共享栈的基本实现
最新推荐文章于 2024-06-05 10:49:28 发布