4.4 栈实现及其应用

目录

 顺序栈

创建栈:

清空栈:

判断栈是否空 :

进栈 :

出栈 :

取栈顶元素:


栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈)

允许进行操作的一端称为“栈顶”

另一固定端称为“栈底”

当栈中没有元素时称为“空栈”。特点 :后进先出(LIFO)。

 顺序栈

 它是顺序表的一种,具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top(相对指针)完成各种操作。

  typedef  int  data_t ; /*定义栈中数据元素的数据类型*/

typedef struct {

            data_t  *data ;     /*用指针指向栈的存储空间*/

            int  maxlen;    /*当前栈的最大元素个数*/

            int  top ;     /*指示栈顶位置(数组下标)的变量*/

  } sqstack;         /*顺序栈类型定义*/ 

创建栈:

sqstack *stack_create (int len) {

sqstack *ss; ss = (seqstack *)malloc(sizeof(sqstack));

ss->data = (data_t *)malloc(sizeof(data_t) * len);

ss->top = -1;

ss->maxlen = len;

     return ss;

}

清空栈:

stack _clear(sqstack  *s) {

     s-> top = -1 ;

}

判断栈是否空 :

int  stack_empty (sqstack  *s) {

    return   (s->top ==  -1  ?  1 : 0);

}

进栈 :

void  stack_push (sqstack  *s ,  data_t  x) {

    if (s->top = = N - 1){

         printf ( “overflow !\n”) ;

           return  ;

    }     else  {

        s->top ++  ;

        s->data[s->top] = x ;

     }      return  ;

}

出栈 :

datatype  stack_pop(sqstack *s) {

 s->top--;

    return  (s->data[s->top+1]);

}

     取栈顶元素:

datatype  get_top(sqstack  *s) {

      return (s->data[s->top]);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值