顺序栈

Posted mykonons

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序栈相关的知识,希望对你有一定的参考价值。

 /*注意  声明结构体时,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;
}

以上是关于顺序栈的主要内容,如果未能解决你的问题,请参考以下文章

栈文档之顺序栈

顺序栈

栈的入栈和出栈的顺序规律是啥?

顺序栈

顺序栈

数据结构与算法栈与队列C语言版