C语言数据结构---栈

1.栈:只能在一端进行插入和删除的线性表
特点:先进后出,后进先出
2.栈分为顺序栈和链式栈

顺序栈

逻辑结构:线性结构
存储结构:顺序存储

操作:入栈 出栈 销毁
1、创建顺序栈,定义结构体
顺序栈

#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
//定义结构体
typedef struct stack
{
    datatype  *data;   //存放顺序栈的地址
    int maxlen;        //开辟顺序栈存放数据的限制
    int tap;           //栈针
}seqstack_t;

//创建空的顺序表
seqstack_t *createEmSeqStack(int len)
{
     seqstack_t *p=(seqstack_t *)malloc(sizeof(seqstack_t));
     if(p==NULL)
     return NULL;
     p->data=(datatype *)maloc(sizeof(datatype)*len);
     if(p->data==NULL)
     return NULL;
     p->maxlen=len;
     p->top=-1;
     return p;
}

2.入栈操作
通过对栈针的移动完成入栈

int insertSeqStack(seqstack_t *p,datatype data)
{
      if(isFullstack(p))
      return -1;
      p->top++;
      p->data[p->top]=data;
      return 0;
}

3.判断栈是否满

int isFullstack(seqstack_t *p)
{
	return p->top+1 == p->maxlen;//1满  0不满
}

4.出栈操作

datatype outSeqStack(seqstack_t *p)
{
      datatype temp;    //定义中间量来存储返回数据 
                       //  若直接返回则无法完成栈针移动
      if(isEmptySeqStack(p))
      return -1;
      temp=p->data[p->top];
      p->top--;
      return temp;
}

5.判断是否为空

int isEmptySeqStack(seqstack_t *p)
{
	return p->top == -1;//1空 0非空
}

6.销毁栈

 void clearSeqStack (seqstack_t **p)//通过二级指针来完成
{
      free((*p)->data);
      (*p)->data=NULL;
      free(*p);
      *p-=NULL;
    
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值