栈的链式存储结构及其基本运算的实现

栈的链式存储结构及其基本运算的实现

 

采用链式存储的栈,规定栈的所有操作都在单链表的表头进行。

节点*p进栈的操作是在头结点*s之后插入节点*p,出栈的操作是取出头结点*s之后的节点的data值,并将该节点删除。

1)初始化栈

void InitStack(LiStack *&s)

{

  s=(LiStack *)malloc(sizeof(LiStack));

  s-next=null;     

}

(2)销毁栈 DestroyStack(s)

void DestroyStack(LiStack *&s)

{

  LiStack *p=s,*q=s->next;

  while(q!=null)

  {

    free(p);

    p=q;

    q=p->next;              

  }

  free(p);     

}

(3)判断栈是否为空StackEmpty(s)

bool StackEmpty(LiStack *s)

{

  return (s->next==null);     

}

(4)进栈Push(s,e)

void Push(LiStack *&s,ElemType e)

{

  LiStack *p;

  p=(LiStack *)malloc(sizeof(Listack));

  p->data=e;

  p->next=s->next;

  s->next=p;     

(5)出栈Pop(s,e)

bool Pop(LiStack *&s,ElemType &e)

{

  LiStack *p;

  if(s->next==null)

    return false;

  p=s->next;

  e=p->data;

  s->next=p->next;

  free(p); 

  return true;  

}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值