嵌入式每日学习心得2017.07.25

来源:互联网 发布:java deleteonexit 编辑:程序博客网 时间:2024/06/05 04:32
1二分查找
前提:有序
时间复杂度:log2^n
空间复杂度
步骤:
1取出未查找区间的中间值(left+right)/2
2查找关键字key与中间值进行比较:如果key>mid(key在右边),key<mid(key在左边),key=mid说明查找成功
3key!=mid,则循环1到2步骤,直到区间不存在为止


2结构体(struct)
srtuct 类型
{
属性
}


定义变量:引用成员
./->   注:->优先级大于*


指针与结构体变量:
struct 类型* 变量名


以定义类型的顺序进行初始化
以A.B的形式进行引用
分配空间时,会以字节对齐
以最大长度类型作为基本分配空间单位
如果此成员分配的空间足够使下面的成员使用,则会共享


3栈(stack)
先进后出
应用:函数调用,高级功能计算器,取优先级
功能:复杂数据类型


栈顶:允许被操做的一端
栈底:不允许被操作的的一端
压栈 push()
出栈 pop()
栈是否为满 isfull()
栈是否为空 isempty()


进栈:A->B->C->D
出栈:D->C->B->A
高级功能计算器
中缀表达式 :1+1
后缀表达式 :1 1+
前缀表达式 :+1 1


后缀
1数字进栈
2如果是运算符则将栈顶与次栈顶取出,进行运算并再次进栈
3直到后缀表达式遍历完成
中缀转后缀
1将中缀表达式从左往右遍历
2如果是数字则成为后缀表达式一部分,如果是运算符时:
(1)如果是(或栈为的优先级空时直接入栈
(2)如果是)则将栈顶元素依次出栈,直到遇到主括号为止
(3)如果当前运算符的优先级高则进栈,否则出栈。出栈到栈顶元素要优先级低于时或栈为空时停止
(4)直到遍历完成
例:
中表达式式: (3+2)-4*2+9
后缀表达式: 3 2 + 4 2 * - 9 +   
原创粉丝点击