首页 > 代码库 > 顺序栈
顺序栈
/*注意 声明结构体时,struct node l 函数用f(&l)参数必须带取地址符
传参时 传的是结构体首地址
若要使用指针指向结构体那必须为这个结构体分配动态内存 否则 无法使用
顺序栈:利用一组连续的存储单元依次存放自栈底到栈顶的数据元素;
由于栈顶元素是经常变动的,所以附设top指示栈顶元素在顺序表中
的位置
基本操作
1.初始化
2.判断栈是否为空
3.取栈顶元素
4.入栈
5.出栈
*/
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define maxsize 100
typedef struct
{
int stack[maxsize];
int top;
}seqstack;
void init(seqstack *l)
{
l->top=-1;
}
int empty(seqstack *l)
{
if(l->top ==-1 )
{
printf("表为空\n");
return 1;
}
else
return 0;
}
int gettop(seqstack *l)
{
int temp;
if(l->top<0)
{
printf("栈为空\n");
return 0;
}
else
{
temp=l->stack[l->top];
return temp;
}
}
int push(seqstack *l,int e)
{
if(l->top==maxsize)
{
printf("数组已满\n");
return 0;
}
else
{ l->top++;
l->stack[l->top]=e;
return 1;
}
}
int pop(seqstack *l)
{
int temp;
if(l->top==0)
{
printf("栈中已无元素");
return 0;
}
else
{
temp=l->stack[l->top];
l->top--;
} return temp;
}
int main()
{ seqstack l,*q;
//q=(seqstack *)malloc(sizeof(seqstack)) ;
int temp,temp1;
// init(q);
init(&l);
empty(&l);
printf("入栈元素为1,2,3,4,5\n");
push(&l,1);
push(&l,2);
push(&l,3);
push(&l,4);
push(&l,5);
temp=gettop(&l);
printf("栈顶元素为:%d\n",temp);
pop(&l);
temp1=gettop(&l);
printf("出栈后的栈顶元素为:%d",temp1);
return 0;
}
顺序栈