第二周学习报告


栈和队列
1
栈 是一种线性表 元素的插入和删除只能在一端进行 ;
性质为先进后出
栈的基本运算:
构造空栈 为 InitStack ( Stack *S )
判断栈为空 为 StackEmpty(Stack *S )
进栈 为 Push (Stack *S int __ )
出栈 为 Pop (Stack *S int __)
判断栈满 为 StackFull ( Stack *S ) …
其中 栈的实现 与汉洛塔 问题 相似
2
队列 也是一种线性表 元素的插入只能在一端插入 在另一端取出
队头为插入端 队尾为 删除端
性质为先进先出
队列的基本运算
置空队 :InitQueue(Queue *Q)
判断队为空: QueueEmpty(Queue *Q)
判断队为满: QueueFull(Queue *Q)
入队 : EnQueue(Queue *Q, int __)
出队 : DeQueue(Queue *Q )
其中 CPU分时系统 问题 相似


字符组成的数列
定位串 Index(S,T,X )
int Index(String S, String T, int X)
S为 主串 T为 子串 X 表示 字符位置
字符串的结尾处结束的标志使用 ’\0’
俩种类型 顺序串 和 链串
顺序串 为
#define INIZTSTRLEN 100
typedef struct{
char *ch;
int length;
int strsize;
}string;
链串 为
typedef struct node{
char ch;
struct node *next;
}linkstr;

二分法
指在有序集合中搜索特定值的过程
有整数二分和浮点数二分
基本形式为给一个数组 A 给一个数 B 问 A中是否有 B 如有 返回A中的索引 若没有返回 -1;
二分法 有很多变形的形式 题很灵活

前缀
一维前缀和
就是从数组的第一个开始累加
定义
s[i]=a[1]+a[2]+……+a[i];
可以为 int a [ 10 ] ,s [ 10 ] ;
求a[5]+…a[9]
即为 s[9] -s[4] 可以在 O(1)情况下求出任何区间内的和
二维前缀和
在O(1)情况下求出任何子矩阵的和
指一个前i行和前j列的子矩阵的和

差分
序列中每个元素与其前一个元素的差 为前缀和的逆运算
使用在一维数组方便
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

位运算
计算机内元素以二进制形式存在的
即位运算为整数在内存中以二进制数进行位的操作运算
&(按位与)、
|(按位或)、
^(按位异或)
~ (取反)
<< 左移
**>> 右移
操作对象为 整形和字符型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值