QQ登录

只需一步,快速开始

搜索
鱼C论坛笔记大赛成绩公示
楼主: 小甲鱼

[争议讨论] 《数据结构和算法》系列视频教程勘误贴

[复制链接]
最佳答案
0 
累计签到:7 天
连续签到:1 天
发表于 2016-3-3 00:01:14 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:116 天
连续签到:1 天
发表于 2016-3-11 13:17:44 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:33 天
连续签到:1 天
发表于 2016-3-22 10:56:02 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:7 天
连续签到:1 天
发表于 2016-4-1 15:10:56 | 显示全部楼层
支持小甲鱼哦~~求视频地址
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:5 天
连续签到:1 天
发表于 2016-5-29 21:48:03 | 显示全部楼层
第76讲 二叉排序树的查找、插入和删除2
11:33分  对要删除的结点作判断时忽略了一种可能  就是该结点是叶子的情况  
在这种情况下 前两个if后的语句都不准确
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:41 天
连续签到:1 天
发表于 2016-7-28 17:15:19 | 显示全部楼层
视频位置: 线性表12|循环链表 – 数据结构和算法17 , 第19分钟处
错误内容:小甲鱼提出的需求是在循环链表的第3个节点处插入新的结点, 但是在代码的第57行处 p=target—->next 指向的是第4个结点,导致结果是在第4个结点插入了新结点,可能会导致学习的朋友产生误解。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:336 天
连续签到:1 天
发表于 2016-8-9 13:32:25 | 显示全部楼层
按照小甲鱼的代码编程的,然后在计算负数的时候会出现问题,求助!
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#define SIZE 20
#define STACKINCREMENT 10
#define MAXBUFFER 10
typedef double ElemType;//如果定义int,一串数字都会一起放入
typedef struct
{
    ElemType *base;
    ElemType *top;
    int stackSize;
}sqStack;
void InitStack(sqStack *s)
{
    s->base=(ElemType *)malloc(SIZE*sizeof(ElemType));
    if(!s->base)
        exit(0);
    s->top=s->base;
    s->stackSize=SIZE;
}
void Push(sqStack *s,ElemType e)
{
    if(s->top-s->base==s->stackSize)
    {
        s->base=(ElemType *)realloc(s->base,(s->stackSize+STACKINCREMENT)*sizeof(ElemType));
        if(!s->base)
            exit(0);
        s->top=s->base+s->stackSize;
        s->stackSize=s->stackSize+STACKINCREMENT;
    }
    *(s->top)=e;
    s->top++;
}
void Pop(sqStack *s,ElemType *e)
{
    if(s->top==s->base)
        return;
    *e=*(--(s->top));
}
int StackLen(sqStack s)//测试传数据,修改传指针
{
    return(s.top-s.base);
}
int main()
{
    sqStack s;
    char c;//建立缓存区
    int i=0;
    double d,e;
    char str[MAXBUFFER];
    InitStack(&s);
    printf("请按后缀表达式输入带计算数据,数据与运算符之间用空格隔开,以#作为结束标志:\n");
    scanf("%c",&c);
    while(c!='#')
    {
        while(isdigit(c)||c=='.')//用于过滤数字
        {
            str[i++]=c;
            str='\0';
            if(i>=10)
            {
                printf("出错:输入的单个数据过大!\n");
                return -1;
            }
            scanf("%c",&c);
            if(c==' ')
            {
                d=atof(str);
                Push(&s,d);
                i=0;
                break;
            }
        }
        switch(c)
        {
            case '+':
                Pop(&s,&e);
                Pop(&s,&d);
                Push(&s,e+d);
                break;
            case '-':
                Pop(&s,&e);
                Pop(&s,&d);
                Push(&s,d-e);
            case '*':
                Pop(&s,&e);
                Pop(&s,&d);
                Push(&s,e*d);
                break;
            case '/':
                Pop(&s,&e);
                Pop(&s,&d);
                if(e!=0)
                {
                    Push(&s,d/e);
                }
                else
                {
                    printf("\n出错:除数为零!\n");
                    return -1;
                }
                break;
        }
        scanf("%c",&c);

    }
    Pop(&s,&d);
    printf("\n最终的计算结果为: %f\n",d);
    return 0;
}
1.png
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:9 天
连续签到:1 天
发表于 2016-8-27 18:56:35 | 显示全部楼层
68讲 关键路径  lte表中的 a2 , a3 。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:9 天
连续签到:1 天
发表于 2016-8-27 22:16:18 | 显示全部楼层

68讲 关键路径  后面代码那块儿 我想问后面的 weight权值你在哪个结构体里面定义的?
还有 不要老是说95% 的人都听懂了, 给我的打击很大有木有!
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:14 天
连续签到:1 天
发表于 2016-9-3 17:58:31 | 显示全部楼层
谢谢小甲鱼啦,如果不是你,我的算法还不知道咋入门呢。。万分感谢,也很喜欢雨C这个大家庭
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:163 天
连续签到:1 天
发表于 2016-9-10 11:55:43 | 显示全部楼层
第90讲 直接插入排序
  1. void insertSort(int *a,int size){
  2.     int i, j, k;
  3.     for(i=1;i<size;i++){
  4.         if(a[i]<a[i-1]){
  5.             k = a[i];
  6.             for(j=i-1;k<a[j];j--){
  7.                 a[j+1] = a[j];
  8.             }
  9.             a[j+1] = k;
  10.         }
  11.     }
  12. }
复制代码



gcc version 6.1.0 (i686-posix-dwarf, Built by MinGW-W64 project)
进行了编译

int i, a[]={5,2,6,0,3,9,1,7,4,8};
排序后的结果:
[2, 3, 4, 4201311, 4201328, 5, 6, 7, 9, 8]

j--直接减到-2了

不得不加了个
        ...
        for(j=i-1;k<a[j] && j>=0;j--){
        ...
排序后的结果才正常。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:6 天
连续签到:1 天
发表于 2016-10-5 16:43:13 | 显示全部楼层
很感谢小甲鱼                                 {:1_1:}
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:3 天
连续签到:1 天
发表于 2016-11-16 11:43:41 | 显示全部楼层
数据结构是一个很重要的一个课程!谢谢小甲鱼!
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 
累计签到:147 天
连续签到:3 天
发表于 2016-11-30 13:07:43 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:5 天
连续签到:1 天
发表于 2017-1-26 18:59:41 | 显示全部楼层
8086看完就可以学破解了吗 还要不要学win32汇编呢
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 
累计签到:22 天
连续签到:2 天
发表于 2017-3-1 01:39:47 | 显示全部楼层
今天原本在网易云找不到排序技术的章节,后来在视频整合的地方找到了,只是网易云还没补上,老师有空补上吧,免得其他同学着急
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:209 天
连续签到:3 天
发表于 2017-3-30 15:43:29 | 显示全部楼层
甲鱼大佬,我感觉这个数据结构30讲   栈和队列8   11.03分钟讲的插入队列里的InsertQueue的if( (q->rear+1)MAXSIZE == q->front)  有问题 ,如果q->rear指向倒数一个位置,q->front还在0处,这样的话+1再取余就等于0就直接return了,那么最后一个位置就不能放数据了
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 

尚未签到

发表于 2017-4-28 10:45:06 | 显示全部楼层
本帖最后由 greenturtle 于 2017-4-28 10:56 编辑

第28讲 栈和队列6-中缀表达式转化为后缀表达式(下)。
错误位置:7分59秒
错误原因:“(”可以直接入栈,*和/不行。如果出现2*3/6*3这种“连续乘除”,要先输出之前的*或/,也就是说如果同优先级的话仍然要先输出最先进栈的符号(类似+-运算)。按照视频中的方法无法正确输出“连续乘除”的逆波兰表达式。
我的解决方法:
  1. /********把  else if('/'==e||'*'==e||'('==e){  }   代码块改成如下部分:*********/
  2. else if( '*'==c || '/'==c )
  3.         {
  4.             if( !StackLen(s) )
  5.             {
  6.                 Push(&s, c);  //如果第一次要进行*或/运算,即栈为空,直接压入栈。
  7.             }
  8.             else
  9.             {
  10.                 do
  11.                 {
  12.                     Pop(&s, &e);
  13.                     if( '(' == e )  //如果栈里上一个元素是(,则不需要改变原栈,把(压回去
  14.                     {
  15.                         Push(&s, e);
  16.                     }
  17.                     else if('/'==e||'*'==e)  //如果上一个元素是/或*,即发生"连续乘除"操作,要先把上一个*或/输出
  18.                     {
  19.                         printf("%c ", e);
  20.                         break;      //输出后跳出循环,把当前/或*压入栈
  21.                     }
  22.                     else
  23.                     {
  24.                         Push(&s, e);break;  //如果上一个元素是+-则不需要改变原栈,跳出循环压入当前/或*方可
  25.                     }
  26.                 }while( StackLen(s) && '('!=e );  //判断是否弹完或读到(

  27.                 Push(&s, c);  //压入当前的/或*
  28.             }
  29.         }
  30.         else if('('==c )    //(直接压入栈即可
  31.         {
  32.             Push(&s, c);
  33.         }
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 

尚未签到

发表于 2017-5-2 17:00:39 | 显示全部楼层
vanentu 发表于 2015-5-21 17:21
小甲鱼老师啊!KMP 前缀后缀讲的糊里糊涂不得其意,难以理解,大家看的糊涂时可以百度参考下别人的讲解,这 ...

对呀,第一次感觉听不懂....
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:61 天
连续签到:15 天
发表于 2017-5-26 22:51:11 | 显示全部楼层
本帖最后由 yzw 于 2017-5-27 11:10 编辑

25集,栈和队列3,Bin2Dec.c那题,自己写了很久找不出错误在哪,我在linux上用VIM写的,然后我原原本本按照视频的代码打下来,发现在Linux上还是运行不出结果,但是在DevC++上却能运行,不知道是什么原因??

同样的c文件,在linux上回车后什么都没有发生,复制到windows里面用DevC++打开运行没问题。

编辑:是我太粗心啦!没有把 ElemType 从 int 改为 char!     但是为什么在DevC++里面没出问题!!!???
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-9-26 20:33 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表