继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

慕粉152226940
关注TA
已关注
手记 72
粉丝 8
获赞 43

【备战春招】第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. 示例

图片描述

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP