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.获胜,占优势;流行;盛行