实现栈的数据结构
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#define N 50
struct stack
{
int top;//栈顶的下标
int data[N];//存储栈的数据
//void *p[N];
};
void init(struct stack *p)//对于栈进行初始化
{
p->top = -1;//代表为空,下标0代表第一个元素
memset(p->data, 0, sizeof(int)*N);//初始化一个栈
}
void clear(struct stack *p)
{
p->top = -1;//代表为空,下标0代表第一个元素
memset(p->data, 0, sizeof(int)*N);//初始化一个栈
}
int isempty(struct stack *p)//判定是否为空
{
if (p->top==-1)
{
return 1;//为空
}
else
{
return 0;//不为空
}
}
int isfull(struct stack *p)
{
if (p->top==N-1)
{
return 1;//栈满了
}
else
{
return 0;//栈不满
}
}
void push(struct stack *p,int key)
{
if (isfull(p)==1)
{
return;
}
else
{
p->top += 1;//下标前移
p->data[p->top] = key;//压入数据
}
}
int gettop(struct stack *p)
{
return p->data[p->top];//返回栈顶数据
}
void pop(struct stack *p)
{
if (isempty(p)==1)
{
return;
}
else
{
p->top -= 1;
}
}
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#define N 50
struct stack
{
int top;//栈顶的下标
int data[N];//存储栈的数据
//void *p[N];
};
void init(struct stack *p)//对于栈进行初始化
{
p->top = -1;//代表为空,下标0代表第一个元素
memset(p->data, 0, sizeof(int)*N);//初始化一个栈
}
void clear(struct stack *p)
{
p->top = -1;//代表为空,下标0代表第一个元素
memset(p->data, 0, sizeof(int)*N);//初始化一个栈
}
int isempty(struct stack *p)//判定是否为空
{
if (p->top==-1)
{
return 1;//为空
}
else
{
return 0;//不为空
}
}
int isfull(struct stack *p)
{
if (p->top==N-1)
{
return 1;//栈满了
}
else
{
return 0;//栈不满
}
}
void push(struct stack *p,int key)
{
if (isfull(p)==1)
{
return;
}
else
{
p->top += 1;//下标前移
p->data[p->top] = key;//压入数据
}
}
int gettop(struct stack *p)
{
return p->data[p->top];//返回栈顶数据
}
void pop(struct stack *p)
{
if (isempty(p)==1)
{
return;
}
else
{
p->top -= 1;
}
}