精华内容
下载资源
问答
  • js难的是抽象概念编程语言也能抽象JS Python java PHP 根本就没区别这些语言都有声名if......--简洁之美2,所有的编程逻辑,都在使用逻辑三段论逻辑命题1:js有7种数据类型:string,number,bool symbol undefine...

    js难的是抽象概念

    编程语言也能抽象

    JS Python java PHP 根本就没区别

    这些语言都有

    • 声名
    • if...else
    • while 循环 for 循环
    • 函数
    • 对象

    这意味着

    • 你没有必要过分关注语言的细节
    • 你首先理解这些语言的不变之处
    • 以不变应万变

    1,对编程的热爱---简洁之美

    2,所有的编程逻辑,都在使用逻辑

    • 三段论逻辑
    • 命题1:js有7种数据类型:string,number,bool symbol undefined null object
    • 命题2js函数不属于前六种类型
    • 推论:js的函数属于object类型

    命题1: js中所有函数都是由Function 构造的
    命题2: Function,object,Arry 是函数
    推论:Function ,object ,Array 是由 Function 构造的

    逻辑VS 直觉

    • 直觉的好处
    • 直觉能让你快速学会一些东西
    • 比如数字,字符串,数组,对象都可以靠直觉学会
    • 直觉的坏处
    • 直觉却又能阻止你学会另外一些东西
    • 这时你就只能依靠逻辑来说服自己
    • 比如虽然不知Function 是如何构造Function的,但逻辑告诉我们,确实如此

    如何用代码表示逻辑

    • 栗子
    • 输出两个数中较大一个数
    • 如果第1个数大于第二个数,就输出第1个数
    • 代码
    • a=[12,32]
    • if a.age(0)>a.get(1)
    • print a.get(0)
    • else
    • print a.get(1)

    结论
    用 if...else...可以表示逻辑---发现规律

    栗子2

    • 输出N个数中最大的一个数
    • 找到第 1,2个数字中较大的那一个,存入max
    • 找到max和第3个数字中较大的那个,存入max
    • 找到max和第,,,个,存入max
    • max 就是最大的属

    fb3006f6a23d390198d188576b56b639.png

    代码

    • a =[12,32,9,1,23,6]
    • max = a [0]
    • for i from 1 to a.length() -1
    • if a.get(i) max then max

    结论
    用for循环可以表示逻辑

    只需要三种语句---[结构化编程] 理论*
    但结构化编程在某些情况下回变得麻烦,比如错误处理

    三种逻辑语句搞定所有编程逻辑

    • 顺序执行语句
    • 语句1
    • 语句2

    e6280dacb6aff3c404e375c79685183f.png
    • 条件判断语句
    • if...then...else..
    • if...eles if ...else

    0450a7323d367cc35f9331e9896caeeb.png
    • 循环语句
    • while..do...
    • for i from 1 to n ....

    6955b4648a5a19ac6e8f868915c4928e.png

    流程图 , 伪代码的好处

    • 锻炼你的大脑
    • 你必须自己画出来
    • 不能运行在计算机里

    整理你的思路

    • 思路乱,则图乱
    • 伪代码都写不好,则代码更写不好

    两个数字找到较大的一个的流程图

    73e19e7492196e409cf4c3f22b75c3cb.png

    n个数字找到较大一个的流程图

    dd5e4597e44627344731ff27c807c26a.png

    总结

    • 逻辑很重要
    • 用三种语句表达逻辑
    • 用图和伪代码表示三种语句

    数据结构的作用

    • 数据结构作用
    • 提前记住一些结构
    • 这些结构很常见
    • 这些结构能让你很快理清思路
    • 这些结构面试经常问
    • 锻炼你得抽象能力
    • 一种数据结构往往能解决很多类似问题
    • 如果你选错了数据结构,你根本就不想出路
    • 牛逼的程序员更重视数据结构而,不是算法

    8种排序算法快速学会数据结构

    展开全文
  • 一.对代码的热爱 简洁之美,用简单的东西解决复杂的问题 电影是一门艺术,编程也是 一丝不苟,态度等价值观 二....采用三段论逻辑,比如 ...3种结构化编程 三种语句解决逻辑 顺序执行语句 语句1 语句2 判断执行...

    一.对代码的热爱

    简洁之美,用简单的东西解决复杂的问题

    电影是一门艺术,编程也是

    一丝不苟,态度等价值观

    二.逻辑也叫算法

    采用三段论逻辑,比如

    • 所有的函数都是由Function构造的
    • Function,Array,Object都是函数
    • 推论出Function、Array、Object都是由Function构造的

    3种结构化编程 三种语句解决逻辑

    • 顺序执行语句

      语句1

      语句2

    • 判断执行语句

      if …then …else

      if…else if …else

    • 循环执行语句

      while…do…

      for i from 1 to n …
      在这里插入图片描述

      伪代码:

      when i<10

      ​ 语句1

      ​ i+=1

      语句2

    流程图和伪代码

    方型代表顺序执行,圆角矩形代表开始结束

    菱形代表条件判断,循环必定成圈

    用流程图求两个数最大

    用MindManager

    在这里插入图片描述

    用流程图求n个数最大—伪代码

    在这里插入图片描述

    总结

    • 逻辑很重要
    • 用三种语句表达逻辑
    • 用图和伪代码可以表示三种语句

    三.数据结构=数据逻辑形式+操作

    如何表示2个数据

    顺序有意义,如坐标 如first和last操作

    顺序无意义,如血压 无需first和last操作

    如何表示N个数据 线性

    顺序有意义:数组 要提供索引等操作

    顺序无意义:集合

    如何表示N对N个数据 哈希表

    key ->value

    hash={1001=>‘小方’,1002=>‘小红’}

    哈希表和js对象区别:js有下标 有隐藏属性

    如学号对姓名

    【经典题】

    如何计算一段英语中多少个字母,大小写的,符号出现的次数:

    用哈希表做
    在这里插入图片描述

    展开全文
  • js难的是抽象概念编程语言也能抽象JS Python java PHP 根本就没区别这些语言都有声名if......--简洁之美2,所有的编程逻辑,都在使用逻辑三段论逻辑命题1:js有7种数据类型:string,number,bool symbol undefine...

    js难的是抽象概念

    编程语言也能抽象

    JS Python java PHP 根本就没区别

    这些语言都有

    • 声名
    • if...else
    • while 循环 for 循环
    • 函数
    • 对象

    这意味着

    • 你没有必要过分关注语言的细节
    • 你首先理解这些语言的不变之处
    • 以不变应万变

    1,对编程的热爱---简洁之美

    2,所有的编程逻辑,都在使用逻辑

    • 三段论逻辑
    • 命题1:js有7种数据类型:string,number,bool symbol undefined null object
    • 命题2js函数不属于前六种类型
    • 推论:js的函数属于object类型

    命题1: js中所有函数都是由Function 构造的
    命题2: Function,object,Arry 是函数
    推论:Function ,object ,Array 是由 Function 构造的

    逻辑VS 直觉

    • 直觉的好处
    • 直觉能让你快速学会一些东西
    • 比如数字,字符串,数组,对象都可以靠直觉学会
    • 直觉的坏处
    • 直觉却又能阻止你学会另外一些东西
    • 这时你就只能依靠逻辑来说服自己
    • 比如虽然不知Function 是如何构造Function的,但逻辑告诉我们,确实如此

    如何用代码表示逻辑

    • 栗子
    • 输出两个数中较大一个数
    • 如果第1个数大于第二个数,就输出第1个数
    • 代码
    • a=[12,32]
    • if a.age(0)>a.get(1)
    • print a.get(0)
    • else
    • print a.get(1)

    结论
    用 if...else...可以表示逻辑---发现规律

    栗子2

    • 输出N个数中最大的一个数
    • 找到第 1,2个数字中较大的那一个,存入max
    • 找到max和第3个数字中较大的那个,存入max
    • 找到max和第,,,个,存入max
    • max 就是最大的属

    3679d237d2da9b7a5916ec142a4dd452.png

    代码

    • a =[12,32,9,1,23,6]
    • max = a [0]
    • for i from 1 to a.length() -1
    • if a.get(i) max then max

    结论
    用for循环可以表示逻辑

    只需要三种语句---[结构化编程] 理论*
    但结构化编程在某些情况下回变得麻烦,比如错误处理

    三种逻辑语句搞定所有编程逻辑

    • 顺序执行语句
    • 语句1
    • 语句2

    dad7c377bddfe2b46598f764834d7d6a.png
    • 条件判断语句
    • if...then...else..
    • if...eles if ...else

    57dc6f501d58fff5efb66bb36b53b62c.png
    • 循环语句
    • while..do...
    • for i from 1 to n ....

    751e6c12ba860e6b7e19d278996003f4.png

    流程图 , 伪代码的好处

    • 锻炼你的大脑
    • 你必须自己画出来
    • 不能运行在计算机里

    整理你的思路

    • 思路乱,则图乱
    • 伪代码都写不好,则代码更写不好

    两个数字找到较大的一个的流程图

    e6e20ba81786a5f5fcef95aec057e611.png

    n个数字找到较大一个的流程图

    66f0d47efe628051264d7f4dead7180c.png

    总结

    • 逻辑很重要
    • 用三种语句表达逻辑
    • 用图和伪代码表示三种语句

    数据结构的作用

    • 数据结构作用
    • 提前记住一些结构
    • 这些结构很常见
    • 这些结构能让你很快理清思路
    • 这些结构面试经常问
    • 锻炼你得抽象能力
    • 一种数据结构往往能解决很多类似问题
    • 如果你选错了数据结构,你根本就不想出路
    • 牛逼的程序员更重视数据结构而,不是算法

    8种排序算法快速学会数据结构

    展开全文
  • 题目:假设稀疏矩阵A和B均以三元组表作为存储结构,试写出矩阵相加和相乘的算法,另设三元组表C存放结果矩阵。要求:从键盘输入稀疏矩阵A和B检测A和B能否相加/相乘如能,做矩阵相加和相乘运算,并打印运算结果如不能...

    题目:假设稀疏矩阵A和B均以三元组表作为存储结构,试写出矩阵相加和相乘的算法,另设三元组表C存放结果矩阵。

    要求:

    从键盘输入稀疏矩阵A和B

    检测A和B能否相加/相乘

    如能,做矩阵相加和相乘运算,并打印运算结果

    如不能,应显示出原因

    这里主要就是三元组的运用,比较基础,详情见代码中的注释。

    #include

    #include

    #define OK 1 //函数结果状态

    #define ERROR 0

    #define MAX 100

    typedef int Status;//函数结果状态类型

    typedef struct{

    int i,j; //三元组的行号、列号;

    int e; //三元组的值;

    }Triple;

    typedef struct{

    Triple data[MAX];//非零元三元组表示

    int rpos[MAX]; //稀疏矩阵三元组各行起始坐标

    int mu,nu,tu; //矩阵的行数、列数和非零元个数

    }Matrix;

    void Input(Matrix *M,Matrix *N);

    Status CreateMatrix(Matrix *M);

    Status PrintMatrix(Matrix M);

    Status PlusMatrix(Matrix M, Matrix N, Matrix *D);

    Status MultMatrix(Matrix M, Matrix N, Matrix *Q);

    int main(){

    //freopen("in.txt","r",stdin);

    //freopen("output.txt","w",stdout);

    Matrix M,N,D,Q;

    Input(&M,&N);

    if(!PlusMatrix(M,N,&D))

    printf("They cannot be added.\n");

    if(!MultMatrix(M,N,&Q))

    printf("They cannot be multiplied.\n");

    return 0;

    }

    void Input(Matrix *M,Matrix *N){

    printf("Please input the rows and cols and number of the nonzero element:");

    if(!CreateMatrix(M))

    printf("Error Create M!\n");

    PrintMatrix(*M);

    printf("Please input the rows and cols and number of the nonzero element:");

    if(!CreateMatrix(N))

    printf("Error Create N!\n");

    PrintMatrix(*N);

    }

    Status CreateMatrix(Matrix *M){//创建稀疏矩阵,采取三元组存储

    int num[MAX]={0}; //对应行非零元个数

    int flag[MAX][MAX]={0};//标记对应位置是否已有非零元

    int i,j,e; //非零元三元组的临时存储变量

    scanf(" %d%d%d",&M->mu,&M->nu,&M->tu);

    while(M->mu < 0 || M->nu < 0 || M->tu > M->mu * M->nu){//判断矩阵行数、列数和非零元个数是否合法

    printf("The rows,cols and number of nonzero element is out of normal range!!\n");

    printf("Please input again:");

    scanf(" %d%d%d",&M->mu,&M->nu,&M->tu);

    }

    if(!M->tu) return OK;//全部为零元素,直接返回

    for(int k = 1;k <= M->tu;k++){//输入非零元

    printf("Please input the row,col,and data of element:");

    scanf(" %d%d%d",&i,&j,&e);

    while(i <= 0 || i > M->mu || j <= 0 || j > M->nu){//判断输入非零元行号、列号合法

    printf("The row,col and data of element is out of normal range!!\n");

    printf("Please input again:");

    scanf(" %d%d%d",&i,&j,&e);

    }

    while(!e){//判断是否非零元

    printf("Zero element occurs!\n");

    scanf(" %d",&e);

    }

    if(!flag[i][j]){//判断该位置是否已有非零元

    flag[i][j] = 1;

    }

    else{

    printf("Here exists!\n");

    continue;

    }

    int l,m;

    //寻找该三元组的位置

    if(k==1){

    M->data[k].i = i;

    M->data[k].j = j;

    M->data[k].e = e;

    continue;

    }

    for(l = 1;l < k && (i > M->data[l].i || (i == M->data[l].i && j > M->data[l].j));l++);

    for(m = k-1;m >= l;m--){//依次向后移动

    M->data[m+1] = M->data[m];

    //printf("%d\n",M->data[m+1].i);

    }

    //保存数据

    M->data[l].i = i;

    M->data[l].j = j;

    M->data[l].e = e;

    //printf("%d\t%d\t%d",M->data[k].i,M->data[k].j,M->data[k].e);

    //printf("%d\n",k);

    }

    //求各行非零元起始位置

    if(M->tu){//判断非零元个数是否为0

    for(int m = 1;m <= M->tu;m++)

    ++num[M->data[m].i];//求M中每行非零元素个数

    M->rpos[1] = 1;//起始位置赋值

    for(int m = 2;m <= M->tu;m++)

    M->rpos[m] = M->rpos[m-1] + num[m-1];

    }

    return OK;

    }

    Status PlusMatrix(Matrix M, Matrix N, Matrix *D){//求稀疏矩阵的和Q=M+N

    if(M.mu != N.mu || M.nu != N.nu)//检查稀疏矩阵M和N的行数和列数是否对应相等

    return ERROR;

    int i = 1,j = 1,k = 1;//各矩阵三元组移动临时变量

    D->mu = M.mu;

    D->nu = M.nu;

    D->tu = 0;

    if(M.tu*N.tu == 0)//零矩阵,直接返回

    return OK;

    while(i <= M.tu && j <= N.tu){//M和N均不为空

    if(M.data[i].i < N.data[j].i || (M.data[i].i == N.data[j].i && M.data[i].j < N.data[j].j)){//以行为主序,M中的节点在N前

    D->tu++;

    D->data[k++] = M.data[i++];//结构体赋值

    }

    else if(M.data[i].i == N.data[j].i && M.data[i].j == N.data[j].j){//M和N节点对应

    if(M.data[i].e+N.data[j].e){//M和N相加之和不为0

    D->data[k].i=M.data[i].i;

    D->data[k].j=M.data[i].j;

    D->data[k++].e=M.data[i].e+N.data[j].e;

    D->tu++;

    //printf("%d\n",D->data[k-1].e);

    }

    i++;

    j++;

    }

    else if(M.data[i].i > N.data[j].i ||(M.data[i].i == N.data[j].i && M.data[i].j > N.data[j].j)){//N节点在M前

    D->tu++;

    D->data[k++] = N.data[j++];

    }

    }

    while(i <= M.tu){//将矩阵N的剩余元素插入矩阵

    D->tu++;

    D->data[k++] = M.data[i++];

    }

    while(j <= N.tu){//将矩阵M的剩余元素插入矩阵

    D->tu++;

    D->data[k++] = N.data[j++];

    }

    //printf("%d\n",k);

    printf("Matrix A plus Matrix B is D:\n");

    PrintMatrix(*D);

    return OK;

    }

    Status MultMatrix(Matrix M, Matrix N, Matrix *Q){//进行矩阵M和N相乘

    int arow,brow,ccol,ctemp[MAX];

    int p,q,tp,i,t;//p,q,i为中间变量;tp,t分别为M的各行位置上限

    if(M.nu != N.mu)//判断M的列数和N的行数是否相等

    return ERROR;

    Q->mu = M.mu;

    Q->nu = N.nu;

    Q->tu = 0;

    if(M.tu*N.tu == 0)//判断矩阵是否为非零矩阵

    return OK;

    for(arow = 1;arow <= M.mu;arow++){//处理M的每一行

    for(i = 1;i <= N.nu;i++)//元素累加清零

    ctemp[i] = 0;

    Q->rpos[arow] = Q->tu+1;//起始坐标赋值

    if(arow < M.mu)//找到该行移动次数上限

    tp = M.rpos[arow+1];

    else

    tp = M.tu+1;

    for(p = M.rpos[arow];p < tp;p++){//求Q中第arow行的非零元

    brow = M.data[p].j;

    if(brow < N.mu)//找到N中该行移动次数上限

    t = N.rpos[brow+1];

    else

    t = N.tu+1;

    for(q = N.rpos[brow];q < t;q++){

    ccol = N.data[q].j;//成绩元素在N中列号

    ctemp[ccol] += M.data[p].e * N.data[q].e;

    }

    }

    for(ccol = 1;ccol <= Q->nu;ccol++){//存储非零元

    if(ctemp[ccol]){

    Q->tu++;

    Q->data[Q->tu].i = arow;

    Q->data[Q->tu].j = ccol;

    Q->data[Q->tu].e = ctemp[ccol];

    }

    }

    }

    printf("Matrix A multiply Matrix B is Q:\n");

    PrintMatrix(*Q);

    return OK;

    }

    Status PrintMatrix(Matrix M){//打印矩阵

    int i,j,k = 1;//临时中间变量

    printf("The matrix is:\n");

    for(i = 1;i <= M.mu;i++){//遍历矩阵

    for(j = 1;j <= M.nu;j++){

    if(i == M.data[k].i && j == M.data[k].j){//存在三元组匹配,输出

    printf("%d\t",M.data[k].e);

    k++;

    }

    else

    printf("0\t");

    }

    printf("\n");

    }

    printf("The matrix has %d rows, %d cols ,and %d nonzero elements.\n",M.mu ,M.nu, M.tu);

    return OK;

    }

    展开全文
  • 排队购票问题利用函数递归思想完成新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • linux 内核网络,数据接收流程图

    千次阅读 2013-02-20 10:58:13
    4.3 数据接收流程图 各层主要函数以及位置功能说明:  1)sock_read:初始化msghdr{}的结构类型变量msg,并且将需要接收的数据存放的地址传给msg.msg_iov->iov_base. net/socket.c  2)sock_...
  • linux内核网络,数据发送流程图

    千次阅读 2013-02-20 10:57:16
    4.2 数据发送流程图 各层主要函数以及位置功能说明:  1)sock_write:初始化msghdr{}结构 net/socket.c  2)sock_sendmsg:net/socket.c  3)inet_sendmsg:net/ipv4/af_net.c  4)tcp_sendmsg:申请sk_buff{}...
  • 当然,这篇博文是建立在上一篇博文的基础上,若你还没看过epoll源码,那么我建议你最好还是看一下,请点击【Linux深入】epoll源码剖析 接下来我就以流程图的形式介绍一下函数的调用过程。 整体的数据结构图注:图中...
  • 1)sock_read:初始化msghdr{}的结构类型变量msg,并且将需要接收的数据存放的地址传给msg.msg_iov->iov_base. net/socket.c 2)sock_recvmsg: 调用函数指针sock->ops->recvmsg()完成在INET Socket层的数据...
  • 1、大体流程 (1)打开视频文件 (2)获取视频流 (3)得到流的编码器 (4)获取该编码器的具体信息 (5)根据(3)(4)查找编解码器 (6)打开编码器 (7)初始化SDL显示图像需要的环境 (8)读取数据帧 ...
  • 各层主要函数以及位置功能说明:1)sock_read:初始化msghdr{}的结构类型变量msg,并且将需要接收的数据存放的地址传给msg.msg_iov->iov_base. net/socket.c2)sock_recvmsg: 调用函数指针sock->ops->recvmsg...
  • 4.2 数据发送流程图 各层主要函数以及位置功能说明: 1)sock_write:初始化msghdr{}结构 net/socket.c 2)sock_sendmsg:net/socket.c 3)inet_sendmsg:net/ipv4/af_net.c 4)tcp_sendmsg:申请sk_bu...
  • 转自:...4.3 数据接收流程图 各层主要函数以及位置功能说明: 1)sock_read:初始化msghdr{}的结构类型变量msg,并且将需要接收的数据存放的地址传给msg.msg_iov->iov_base....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,076
精华内容 430
关键字:

数据结构函数流程图

数据结构 订阅