#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
#define OK 1
#define error -1
typedef int status;
typedef struct
{
int top1, top2;
int data[maxsize];
}stack;
void inistack(stack *tws)
{
tws->top1 = -1;
tws->top2 = maxsize;
}
status push(stack *tws, int i, int x)
{
if(i != 0 && i != 1)
return error;
if(tws->top1+1 == tws->top2)
return error; //栈满
if(i == 0)
tws->data[++tws->top1] = x;
else
tws->data[--tws->top2] = x;
return OK;
}
int pop(stack *tws, int i)
{
if(i != 0 && i != 1)
return error;
if(i == 0)
{
if(tws->top1 == -1)
return error; //栈空
else
return tws->data[tws->top1--];
}
else
{
if(tws->top2 == maxsize)
return error; //栈空
else
return tws->data[tws->top2++];
}
}
void main()
{
stack tws;
tws.top1 = 10;
tws.top2 = 13;
inistack(&tws);
printf("tws.top1=%d\ntws.top2=%d\n", tws.top1, tws.top2);
push(&tws, 1, 10);
printf("tws.top1=%d\ntws.top2=%d\n", tws.top1, tws.top2);
printf("tws.data[tws.top2]=%d\n", tws.data[tws.top2]);
int x = pop(&tws, 1);
printf("tws.data[tws.top2]=%d\nx=%d", tws.data[tws.top2], x);
}
3.15√ 假设以顺序存储结构实现一个双向栈,inistack(tws), push(tws), pop(tws)的suanfa
最新推荐文章于 2023-04-26 16:45:15 发布