printf打印结构体_Linux_C开发_第八天_数据结构_栈

本文详细介绍了如何使用C语言实现顺序栈和链式栈的操作,包括定义结构体、创建栈、判断栈的满空状态、入栈、出栈、取栈顶元素以及打印栈元素的方法。主要探讨了顺序栈的'第二代'实现以及链式栈的头插和头删操作。
摘要由CSDN通过智能技术生成

本文主要内容:顺序栈,链式栈

栈:所有的操作都在栈顶,先入后出(FILO)

    TOP类似一个顺序表的尾标last。

本文只描述类似于“第二代”顺序表的栈和链式栈。

 ee99b2fc46e36d58225e6283b86f8c7c.png

栈(类似于第二代顺序表)

定义结构体:

typedef struct node{
      data_t *data;//存储数据  int size;//存数据元素个数  int top;//标记栈顶数据元素的位置}mystack_t;//栈的数据类型

创建:

mystack_t* create_stack(int size) {
      if(size<=0||size>=20000)    return NULL;      //申请栈标识的空间  mystack_t* stack=malloc(sizeof(mystack_t));   if(stack == NULL) {
        printf("标识申请失败!\n");    return NULL;  }  //申请存储数据的空间  stack->data=malloc(sizeof(data_t)*size);   if(stack->data == NULL) {
        printf("空间申请失败!\n");    return NULL;  }  //初始化  stack->size=size;  stack->top=-1;  //返回申请空间的首地址  return stack;}

判满判空:

//判满int isfull_satck(mystack_t* stack){
      return stack->top==stack->size-1;}//判空int isnull_stack(mystack_t* stack){
      return stack->top==-1;}

入栈push:

int push_stack(mystack_t* stack,data_t data) {
      if(stack==NULL||isfull_satck(stack))    return -1;  //增加数据(在top+1的位置上增加数据)  stack->data[stack->top]=data;  //修改top的位置  stack->top++;    return 0;}

出栈:

int pop_sta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值