(C语言)数据结构中栈的使用

(C语言)数据结构中栈的使用

顺序栈

  • (1)进栈操作:s->top++; s->data[s->top] = x;
  • (2)出栈操作:x = s->data[s->top]; s->top–。
  • (3)空栈时:s->top等于-1。
  • (4)栈满时:s->top等于MAXSIZE-1
栈结构体类型的定义
typedef  struct
 { 
     datatype  data[MAXSIZE];  
     int  top;
 }SeqStack;
其相关的算法
  • 算法3.1-置空栈:首先建立栈空间,然后初始化栈顶指针。
SeqStack *Init_SeqStack() 
{
  SeqStack *s; 
  s=(SeqStack*)malloc(sizeof(SeqStack)); 
  s->top= -1;
  return s; 
} 
  • 算法3.2-判空栈
int Empty_SeqStack(SeqStack *s)  
{
 if(s->top==-1)
   return 1;
 else
   return 0;
}

算法3.3-入栈

int Push_SeqStack (SeqStack *s, datatype x)
 {
    if(s->top==MAXSIZE-1)
       return 0;
    else
    {
        s->top++;
        s->data[s->top]=x;
        return 1;
    }
 }
  • 算法3.4-出栈
 int Pop_SeqStack (SeqStack *s, datatype *x)
  {
     if(Empty_SeqStack(s))
        return 0;
     else
      {
        *x=s->data[s->top];
         s->top--;
         return 1;
      }
 }

算法3.5-取栈顶元素

 datatype Top_SeqStack(SeqStack *s)
  {
   if(Empty_SeqStack(s))
      return 0;
   else
      return (s->data[s->top]);
  }

链式栈

链式栈的结构体类型
typedef int datatype;
typedef struct node
 {
   datatype data;
   struct node  *next;
 }StackNode,*LinkStack;
其相关的算法
  • 算法3.6-置空栈
 LinkStack Init_LinkStack()
  {
   return NULL;
  }
  • 算法3.7-判栈空
int Empty_LinkStack (LinkStack top)
 {
   if(top==NULL)
    return 1;
   else
    return 0;
 }
  • 算法3.8-入栈
LinkStack Push_LinkStack (LinkStack top, datatype x)
 {
   StackNode *s;
   s=(StackNode*)malloc(sizeof(StackNode));
   s->data=x;
   s->next=top;
   top=s;
   return top;
}

算法3.9-出栈

LinkStack Pop_LinkStack(LinkStack top, datatype *x)
{
  StackNode *p;
  if (top == NULL)
     return NULL;
  else
  {
     *x=top->data;
     p=top;
     top=top->next;
     free(p);
     return top;
  }
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值