20210420
闲聊 | 回顾 | 田静语法C4-S2 | 高数第二轮复习-第一章(一)| 数据结构-串(一)| 恋词U9
Table of Contents
闲聊
昨晚十点就回到寝室了,看了张子枫的《我的姐姐》。上一次这么爆哭我都忘了是什么时候了,如果不是在宿舍我可能哭的更厉害,其实从一开始就能猜到结局,但是故事情节的发展到某一个点我的心理防线就破了,现在最记得的就是弟弟问姐姐“我只有你了”这句话吧,从这里往后我眼泪就献给了这部电影了。
我是一个有两个姐姐的弟弟,不能说和这部电影中的弟弟感同身受,但姐姐与弟弟的这种姐弟情我自认还是蛮了解的,虽然小时候总是吵架甚至吵架,但是现在长大之后就真的觉得如果姐姐要嫁人了我也肯定舍不得。
不说了,学习了。张子枫的演技真是一步步在提高,弟弟也很不错!
回顾
恋词复习
- sentiment n.看法;看点;观点
- nonsense n.胡说;废话
- entitlement n.应得的权利;津贴
数据结构单链表归并回顾
昨天CJ给我看了一下一个数据结构的代码,大概就是单链表的归并操作,问题是为什么A结点用完之后没有free掉,不会很浪费吗?当时没有仔细看,后来发现这份代码就是链表的归并操作的通用代码。至于为什么没有free掉,看下面。
题目如下:A和B是两个单链表(带表头结点),其中元素递增有序。设计一个算法,将A和B归并成一个按元素值非递减有序的链表C,C由A和B中的结点组成。
首先先解释一下什么是非递减有序。就是从小到大或者允许中间有相等的情形,比如
1 3 4 5 5 6就是非递减有序排列
。
1,2,3,4,5; //递增排列,
9,8,7,6,5; //递减排列。
1,2,3,3,4,5,8,8; //非递减排列,
9,8,7,7,6,5,5,2,1; //非递增排列。
所以题目的意思就是正常链表归并的意思:归并两个链表,这两个链表本来是递增有序的,希望归并成新链表之后还是递增有序的(这里严格来说是非递减有序)。那么算法思想非常简单,定义两个指针(p
,q
)分别追踪A
和B
,然后一直比较,谁小谁所指结点就并入新的链表之中,然后这个指针往后移一位进行新的比较,如此往复。即如图:
那么重点就来了,新的链表是C
,A
和B
都是带头结点的单链表,显然也要归并成一个含有头结点的单链表,那么需不需要为这个链表申请一个头结点空间呢?肯定不需要呀,待归并的两个链表都有头结点了,不用白不用啊!随便拿一个来用即可,就有C = A
这一句了(让C
指向A
链表的头结点),那么B
的头结点没有用了呀,就free
掉。
而A
为什么还是没有free
掉,看下图吧。
所以如果free(A)
会怎么样?全都没了。因为C也只是指向了A,A指向的没有变过!
田静语法C4-S2-定语从句
定语从句的概述
一个句子作定语,修饰限定名词,放在所修饰名词后。
定语从句的写法
关系词+陈述句(重点是关系词的选择)。
定语从句的分类
限定性定语从句和非限定性定语从句。
定语从句的补充
- 限定性定语从句和同位语从句的区别
- 特殊的非限定性定语从句(修饰整句话),
as
和which
。 - 介词提前的定语从句。
高数第二轮复习-第一章(一)
我打算采用先用思维导图列出某一章的知识点,再根据题目去巩固知识点,记得做好错题集!
思维导图
下面这张思维导图只是网上找的,自己有根据这张思维导图进行修改。
题目
暂时不在这里展示,看笔记吧!今天只搞了660前15题。
数据结构-串(一)
定义(逻辑结构)
串是由零个或者多个字符组成的有限序列。串中字符的个数称为串的长度,含有零个元素的串叫空串。
- 串是特殊的线性表,C代表
character
,即线性表中所有元素都是字符。 - 即串的逻辑结构与线性表是类似的,仅仅是在元素类型上加了限制。
存储结构
串的存储结构有很多种,这里只讲比较适合用于考研解题的串的存储结构。
- 当然,串也分顺序存储结构和链式存储结构,但考研不考链式,这里就不讲了。
- 那么这里只讲顺序存储结构中的定长存储结构和变长存储结构。
- 定长存储结构
typedef struct
{
char str[maxSize+1];
int length;
}Str;
maxSize
为已经定义好的常量,表示串的最大长度Str
数组长度为maxSize+1
,是因为多出一个'\0'
作为结束标记。
- 变长存储结构
typedef struct
{
char *ch;
int length;
}Str;
//实例化
Str S;
S.length = L;
S.ch = (char*)malloc((L+1)*sizeof(char));
S.ch[length范围内的位置] = 某字符变量;
某字符变量 = S.ch[length范围内的位置];
free(S.ch);
定长与变长存储结构比较
顺序存储结构类型 | 优点 | 缺点 |
---|---|---|
定长存储结构 | 操作简单,分配释放空间系统来做 | 如果遇到很长的串,当前分配的存储空间不够,要重新设计结构体 |
变长存储结构 | ~只需要free掉之前的,重新分配一个更大的即可 | 操作相对复杂 |
赋值操作
int strAssign (str& str, char* ch)
{
if(str.ch)
free(str.ch);
int len=0;
char *c=ch;
while (*c)
{
++len;
++c;
}
if (len==0)
{
str.ch=NULL;
str.length=0;
return 1;
}
else
{
str.ch=(char*)malloc(sizeof(char) * (len+1));
if(str.ch==NULL)
return 0;
else
{
c=ch;
for (int i=0;i<=len;++i,++c)
str.ch[i]=*c;
str.length=len;
return 1;
}
}
}
取串长度
int strLength (Str str)
{
return str.length;
}
串比较
设两串C1和C2中的待比较字符分别为a和b;
如果a的ASCll码小于b的ASCI码,则返回C1小于C2标记(一个负数);
如果a的ASClII码大于b的ASCII码,则返回C1大于C2标记(一个正数);
如果a的ASCII码等于b的ASCII码,则按照之前的规则继续比较两串中下一对字符;
经过上述步骤没有比较出C,和C2大小的情况下,先结束的串为较小串,两串同时结束则返回两串相等标记(O)。
int strCompare (Str s1, Str s2 )
{
for(int i=0 ;i<sl.length && i<s2.length; ++i)
if(sl.ch[i] != s2.ch [i])
return s1.ch[i] - s2.ch [i];
return s1.length - s2.length;
}
串连接
int concat (Str& str,Str str1,Str str2)
{
if(str.ch)
{
free (str.ch);
str.ch=NULL;
}
str.ch=(char* ) malloc(sizeof(char) * (str1.length+str2.length+1));
if (!str.ch)
return 0;
int i=0;
while (i<str1.length)
{
str.ch[i]=str1.ch [i];
++i;
}
int j=0;
while(j<=str2.length)
{
str.ch[i+j]=str2.ch[j];
++j;
}
str.length=str1.length+str2.length;
return 1;
}
求子串
int subString (Str& substr,Str str, int pos, int len)
{
if(pos<0 || pos>=str.length || len<0 || len>str.length-pos)
return 0;
if(substr.ch)
{
free (substr.ch);
substr.ch=NULL;
}
if(len == 0)
{
substr.ch=NULL;
substr.length=0;
return 1;
}
else
{
substr.ch= (char*)malloc(sizeof (char) * (len+1));
int i=pos;
int j=0;
while (i<pos+len)
{
substr.ch[j]=str.ch[i];
++i;
++j;
}
substr.ch[j] = '\0';
substr.length = len;
return 1;
}
}
清除串
int cleanString(Str &str)
{
if(substr.ch)
{
free (str.ch);
str.ch=NULL;
}
str.length = 0;
return 1;
}
恋词U9
- offset n.支族,旁系;补偿;抵消 v.抵消,补偿
- hypocritical adj.伪善的,虚伪的
- courageous adj.勇敢的;无畏的
- coexistence n.共存;共处
- landlord n.房东;房主
- scrutinize v.仔细检查;仔细观察;细读;细阅
- surveillance n.(对犯罪嫌疑人或可能发生犯罪的地方的)监视
- prevail v.获胜,占优势;流行;盛行