亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【備戰春招】第19天 嵌入式工程師學習筆記

標簽:
C C++ 嵌入式

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

课程信息

课程内容概述

1. 简介

本节介绍了C语言中的单向循环链表。

栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。

顺序栈:栈的顺序存储结构叫做顺序栈。

2. 图形操作

图片描述

  • 特点
    LIFO :last in first out ,后进先出。

  • 基本概念
    栈顶:一般用变量top来表示,在线性栈中表示我们数组的下标。

  • 本质
    栈就是我们特殊一点的线性表。同样具有前驱和后继,只不过,它限定了我们只能在一端进行插入和删除操作的线性表。也就是说,我们其实栈底是固定的,随着元素的增加,我们的栈顶top的值在变化。

3. 出栈和入栈

  • 入栈

栈的插入操作,我们叫做入栈。类似于子弹入弹夹。

图片描述

  • 出栈

栈的删除操作,我们叫做出栈。类似于子弹射出。

图片描述

  • 结论

顺序栈其实就是相当于我们的数组的操作,只不过这里多了一个top记录栈顶,其实就是相当于记录数组最后一个元素的下标

  • 栈的初始值

思考:空栈的时候,top的初始值是多少?

  • 假设top初值是0.

图片描述

  • 假设top初值是-1

图片描述

4. 代码示例

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX 50
typedef char data_t;
typedef struct {
    data_t buf[MAX];
    int top;
} sepstack_t;

sepstack_t *create_sepstack()//创建新的栈
{
    sepstack_t *p = (sepstack_t *) malloc(sizeof(sepstack_t));
    if (NULL == p) {
        printf("malloc is fail!\n");
        return NULL;
    }
    memset(p, 0, sizeof(sepstack_t));
    p->top = -1;
    return p;
}

void push_sepstack(sepstack_t *p, data_t data)//入栈
{
    p->buf[++p->top] = data;
    return;
}

data_t pop_sepstack(sepstack_t *p)//出栈
{
    return p->buf[p->top--];
}

int is_empty_sepstack(sepstack_t *p)//判空
{
    return p->top == -1 ? 1 : 0;
}

int is_fuli_sepstack(sepstack_t *p)//判满
{
    return p->top == MAX - 1 ? 1 : 0;
}

int main() {
    data_t data[MAX];
    int i = 0;
    strcpy(data, "anihc evol I");
    int len = strlen(data);
    data_t res = 0;
    sepstack_t *p = create_sepstack();
    for (i = 0; i < len; i++) {
        push_sepstack(p, data[i]);
    }
    while (!is_empty_sepstack(p)) {
        res = pop_sepstack(p);
        printf("%c", res);
    }
    printf("\n");
    return 0;
}


运行结果

I love china

学习心得

C语言中的数据结构,实践练习了单向循环链表,感觉很有收获。

课程截图

1. 示例

图片描述

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消