为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第20天 嵌入式工程师学习笔记

标签:
C C++ 嵌入式

【备战春招】第20天 嵌入式工程师学习笔记

课程信息

课程内容概述

1. 简介

本节介绍了C语言中的顺序栈的代码实现。

2. 图形操作

图片描述

  • 数据类型的设计
//数据元素的类型
typedef int data_t;

#define  MAX   5

//顺序栈的类型
typedef struct
{
    //数组存储数据元素
    data_t buf[MAX];
    //记录当前栈顶位置的栈顶指针(下标)
    int top;
}seqstack_t;

3. 代码常用操作

创建空的顺序栈,top == -1

seqstack_t *create_empty_seqstack()
{
    //1.为顺序栈在堆区分配空间,用s保存首地址
    seqstack_t *s = (seqstack *)malloc(sizeof(seqstack_t));
    if(NULL == s)
    {
            printf("malloc is fail\n");        
            return NULL;
    }

    memset(s,0,sizeof(seqstack));
//2.置为空栈,s->top = -1;
    s->top = -1;
//3.返回顺序栈的首地址
    return s;
        
}

顺序栈的判空,比较top 和 -1

//2、顺序栈的判空,比较top 和 -1
//   成立返回1,不成立返回0
int is_empty_seqstack(seqstack_t *s)
{
    return s->top == -1 ? 1 : 0; 
}

顺序栈的判满,比较top 和 N - 1

int is_full_seqstack(seqstack_t *s)
{
    return s->top == MAX - 1 ? 1 : 0; 
}

入栈push,先移动top,再插入数据

void push_seqstack(seqstack_t*s,data_t data)
{
    s->buf[++s->top] = data;
    return ;
}

出栈pop,先取数据,再移动top

data_t  pop_seqstack(seqstack_t *s)
{
    return s->buf[s->top--];
}

获得栈顶元素

data_t  get_top_data(seqstack_t *s)
{
    return s->buf[s->top];
}

主函数测试

int main()
{
    int i = 0;
    data_t  ret = 0;
    //创建s,保存了顺序栈的首地址
    seqstack_t *s = create_empty_seqstack();

    //当栈没有满的时候,插入数据
    while(!is_full_seqstack(s))
    {
        push_seqstack(s,i++);
    }

    printf("top : %d\n",get_top_data(s));

    printf("pop : %d\n",pop_seqstack(s));
    while(!is_empty_seqstack(s))
    {
        ret = pop_seqstack(s);
        printf("%d ",ret);
    }

    putchar('\n');

    return 0;
}


学习心得

C语言中的数据结构,实践练习了顺序栈的代码实现,感觉很有收获。

课程截图

1. 示例

图片描述

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消