关于数据结构的10个面试题(c语言实现)

【数据结构】面试题整理 共36题 链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针。与数组不同,链表中的元素在内存中不必是连续存储的,这使得链表在插入和删除操作时非常高效。单向链表(Singly Linked List):每个节点只包含一个指向下一个节点的指针。双向链表(Doubly Linked List):每个节点包含两个指针,一个指向下一个节点,一个指向前一个节点。循环链表(Circular Linked List):链表的最后一个节点指向第一个节点,形成一个环。 阅读详情

1.         输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:

struct ListNode

{

      int       m_nKey;

      ListNode* m_pNext;

};

A:    递归方法逆序输出,栈方法逆序输出。

(任意实现一种既可)

void PrintListUsingRecursicve(pListNode head)

{

    if(head!=NULL)

    {

      PrintListUsingRecursicve(head->m_pNext);

      printf("%d/n",head->m_nKey);

    }

}

void PrintListUsingStack(pListNode head)

{

    Stack s;

    s.top=0;

    pListNode p=head;

   do{

       push(&s,p->m_nKey);

       p=p->m_pNext;

   }while(p!=NULL);

   while(!IsEmpty(&s))

   {

       printf("%d/n",pop(&s));

   }

}

2.         二元树的深度

题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<time.h>

#define MAXLEN 100

#define MAXNUM 10

typedef int Tree[MAXLEN];

Tree bt;

int GetDeep(int i)

{

    int l=0,r=0;

    if(bt[i*2]!=-1)

    {

      l=GetDeep(i*2)+1;

    }

    if(bt[i*2+1]!=-1)

    {

        r= GetDeep(i*2+1)+1;

    }

    return l>r?l:r;

}

int main()

{

    int i=0;

    memset(bt,-1,sizeof(bt));

    for(i=1;i<=MAXNUM;i++)

      bt[i]=i;

   bt[(i-1)*2]=i*2;

   printf("%d /n",GetDeep(1));

   return 0;

}

 

3.         整数的二进制表示中1的个数

题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。

(关键是能不能想到后面的那个方法,只要想到这个方法既可)

int Bit1inInt(int i)

{

 int result=0;

 do{

  result+=i&1;

 }while(i=i>>1);

 return result;

}

 

4.         从上往下遍历二元树

题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。

        (先序,中序,后序三种方式实现)

如果从上往下,从左到右的话只有一种遍历的方式:广度优先遍历。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<time.h>

#define MAXLEN 100

#define MAXNUM 10

typedef int Tree[MAXLEN];

Tree bt;

typedef struct queue

{

    int begin,end;

    int space[MAXLEN];

}Queue;

int main()

{

    int i=0;

    memset(bt,-1,sizeof(bt));

    for(i=1;i<=MAXNUM;i++)

      bt[i]=i;

    Queue qe;

    qe.begin=0;qe.end =0;

    qe.space[qe.end++]=bt[1];

    while(qe.begin!=qe.end)

    {

        if(bt[2*qe.space[qe.begin]]!=-1)//lchild

        {

            qe.space[qe.end++]=bt[2*qe.space[qe.begin]];

        }

        if(bt[2*qe.space[qe.begin]+1]!=-1)//rchild

        {

            qe.space[qe.end++]=bt[2*qe.space[qe.begin]+1];

        }

        qe.begin++;

    }

    printf("--------------------/n");

    for(i=0;i<qe.end;i++)

    printf("%d ",qe.space[i]);

   return 0;

}

 

 

先序,中序,后序三种方式的只是遍历二元树

typedef int Tree[MAXLEN];

Tree bt;

void PreOrderTraverse(int i)

{

   if(bt[i]==-1) {return ;}

        printf("%d ",bt[i]);

        PreOrderTraverse(i*2);//lchild

        PreOrderTraverse(i*2+1);//rchild

}

void InOrderTraverse(int i)

{

   if(bt[i]==-1) {return ;}

        InOrderTraverse(i*2);//lchild

        printf("%d ",bt[i]);

        InOrderTraverse(i*2+1);//rchild

}

void PostOrderTraverse(int i)

{

   if(bt[i]==-1) {return ;}

        PostOrderTraverse(i*2);//lchild

        PostOrderTraverse(i*2+1);//rchild

        printf("%d ",bt[i]);

}

 int main()

 {

    int i=0;

    memset(bt,-1,sizeof(bt));

    for(i=1;i<=MAXNUM;i++)

      bt[i]=i;

    printf("/n---------------/n");

    PreOrderTraverse(1);

    printf("/n---------------/n");

    InOrderTraverse(1);

    printf("/n---------------/n");

    PostOrderTraverse(1);

     return 0;

 }

 

5.         查找链表中倒数第k个结点

题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:

struct ListNode

{

      int       m_nKey;

      ListNode* m_pNext;

};

         (最快的方法,只遍历一遍)

int FindCoundDownInList(pListNode head,int num)

{

    pListNode p1,p2;

    p1=p2=head;

    while(num-->0 && p1!=NULL) p1=p1->m_pNext;

    if(p1==NULL) return 0;

    else{

    while(p1!=NULL)

    {

        p1=p1->m_pNext;

        p2=p2->m_pNext;

    }

    return p2->m_nKey;

    }

}

6.         求三角形面积

给出三角形的三个边长为a、b、c,求三角形的面积。

         (注意考虑是不是三角形)

     double GetArea(int a,int b,int c)

{

    if(a-b>=c || a+b<=c)

    return -0.1;

    else{

    double s=0.5*(a+b+c);

    double area=sqrt(s*(s-a)*(s-b)*(s-c));

    return area;

    }

}

7.         压缩字符串

例如字串”aaabbbbccccc”,转换成相邻字符+个数的形式压缩,成为”a3b4c5”。

         (如果有10个数相同)

       假设需要考虑解压缩

char *MergeString(const char * ch)

{

    char *s=(char *)malloc(sizeof(ch));

    if(s!=NULL)

    {

     int len=strlen(ch), i=0,j=0,k=0;

     for(;i<len;i=j)

     {

        int num=0;

        while(ch[j]==ch[i]) j++,num++;

        s[k++]=ch[i];

        sprintf(s+k,"%d",num);

        k=strlen(s);

     }

    }

   return s;

}

 

 

8.         如何判断一个单向链表是否有环。

int ISCircle(pListNode head)

{

    pListNode p1=head;

    p1=p1->m_pNext;

    while(p1!=NULL)

    {

        if(p1==head) return 1;

        else p1=p1->m_pNext;

    }

    return 0;

}

 

9.         判断一个字符串是否对称。

aabbaa , efffe返回true

aabac返回false

int   SymmetricString( const char *ch)

{

    int len=strlen(ch);

    int i=0,j=len-1;

    if(len%2!=0) return 0;

    for(i=0,j=len-1;i<=len/2;i++,j--)

    {

        if(ch[i]!=ch[j]) return 0;

    }

    return 1;

}

 

10.     判断一个字符串是否是另一个字符串的字串

 

int next[20];

void get_next(const char* T,int next[])

{

    int i=0,j=-1;next[0]=-1;

    int len=strlen(T);

    while(i<len)

    {

        if(j==-1||T[i]==T[j]) {++i;++j;next[i]=j;}

        else j=next[j];

    }

}

int index_KMP(const char * S,const char * T)

{

    int  i=0,j=0;

    get_next(T,next);

    int lens=strlen(S),lent=strlen(T);

    while(i<lens &&j<lent){

    if(j==-1 ||S[i]==T[j]){++i;++j;}

    else j=next[j];    }

    if(j>=lent) return i-lent;

    else return -1;

}

 

链表的定义,栈的定义:

typedef struct stack

{

    int top;

    int space[MAXLEN+1];

}Stack;

int push(Stack *s,int num)

{

    if(s->top>=sizeof(s->space)/sizeof(int)) return -1;//Error

    s->space[s->top++]=num;

    return num;

}

int pop(Stack *s)

{

    if(s->top<0) return -1;

    return s->space[--s->top];

}

int IsEmpty(Stack *s)

{

    return s->top==0;

}

typedef struct ListNode

{

    int m_nKey;

    struct ListNode *m_pNext;

}ListNode,*pListNode;

pListNode CreateList()

{

    srand((unsigned long)time(NULL));

    pListNode head,p1,p2;

    head=(pListNode)malloc(sizeof(ListNode));

    p1=head;p2=p1;

   int i=MAXLEN;

   while(i--){

       p2=(pListNode)malloc(sizeof(ListNode));

   p2->m_nKey= rand()*rand()%(MAXLEN*rand());

   p1->m_pNext=p2;

   p1=p2;

   }

   p2->m_pNext=NULL;

   return head;

}

void PrintList(pListNode head)

{

    pListNode p=head;

   do{

       printf("%d/n",p->m_nKey);

       p=p->m_pNext;

   }while(p!=NULL);

}

 

【C++数据结构面试题】 链表 特殊线性表,它并不是按线性顺序存储数据的线性表,它在每个节点里面包含了下一个节点的指针,来记录下一个节点的位置。 链表节点结构: 数据+next指针 【题1】 链表和数组有什么区别 链表和指针有以下几点不同: 1)存储形式 数组是一块连续的空间,声明时就要确定长度。链表是一块可不连续的动态空间,长度可变,每个节点要保存相邻节点指针。 2)数据查找 数组的线性查找速度快,查找操作直接使用偏移地址。链表需要按顺序检索节点,效率低。 3)数据插入和删除 链表可以快速插入和删除节点,而数组则可能需要大量数 阅读详情

相关推荐

数据结构面试题(含答案)

将数组 1,1,1,2,2,2,2,2,7,7,1,5,5,5,0 转变成 1,2,7,1,5,0 问题比较简单,要注意的是这个数。整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9 的最大子序列的和为 21。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为 5->4->3->2->1。假设 Sum(i, j)是 A[i] ... A[j]的和,那。例如 N1->N2->N3->N4->N5->N2 就是一个有环的链表,环的开始结点是 N5 这里有一个。

Alonei6的博客 1343

保研面试 算法题_计算机考研/保研复试重点整理-数据结构篇

先来一个知识框架图,前方高能预警好了,看完这个框架,你慌了吗?大家心里有个数之后,我们开始划重点,都去给我背!一、什么是数据结构?数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。结构包括逻辑结构和物理结构。数据的逻辑结构包括4种,(1)集合:数据元素之间除了有相同的数据类型再没有其他的关系 (2)线性结构:数据元素之间是一对一的关系 (3)树形结构...

weixin_39644915的博客 1948

C语言面试题汇总(持续更)

笔者最近在找工作,因此对应聘C/C++嵌入式开发工程师容易被问到,或者经常搞不清楚的问题做一个汇总,也希望能对找工作的小伙伴起到帮助参考的作用。本篇集中于C语言方面的面试题目。 因为是自己总结的,可能会存在错误,还烦请各位读者批评指正。 一、变量内存分配 1. 一个由C/C++编译的程序占用的内存分为以下几个部分: ①栈区 —— 局部变量 —— 向低地址生长 —— 自动释放 ——其操作方式类似于数据结构中的栈。 ②堆区—— 向高地址生长 —— 手动分配、释放的存储区 —— malloc,fr..

muxingyan的博客 6275

c语言面试题数据结构,若干数据结构 && 算法面试题【一】(更新完毕)

一、两个栈实现一个队列二、实现一个栈要求:实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)为了在O(1)时间内取到栈内元素的最小值,显然遍历是行不通的。我们需要在入栈和出栈的操作中记录最小值。如果用一个变量(假设叫m)在入栈时记录并保存最小值,假如这个最小的元素出栈。比如:入栈元素分别为: 4 3 2 1这时m保存的最小值为 1但一旦将值为1的...

weixin_42112894的博客 675

一线大厂C语言高频面试题合集

C语言中没有“引用”这一概念,引用是C++引入的特性。指针是C语言的核心特性,表示内存地址的变量。区别在于:代码示例: 2. 什么是野指针?如何避免? 答案解析 野指针是指指向未知或未定义内存地址的指针,可能导致未定义行为(如崩溃)。常见原因:代码示例: 3. 和 在C中的作用是什么? 答案解析代码示例: 4. 什么是内存泄漏?如何检测? 答案解析 内存泄漏是指程序分配的内存未被释放,导致内存占用增加。常见场景:代码示例: 5. 解释C语言中的堆和栈的区别。 答案解析代码示例: 6.

天涯学馆 1303

【面试系列】C 语言高频面试题

涵盖了C语言的基础知识、内存管理、数据结构、函数指针和位运算、内存管理、编译器优化、多线程编程、内联汇编等等重要主题。

在路上的专栏 1189

《妙趣横生的算法》(C语言实现)-第10章算法设计与数据结构面试题精粹

书上分析,每次取字符串尾部一个字符保存到临时变量,然后将字符串前面的所有字符右移一位,然后将临时变量中存放的字符复制到字符串的首部,如此循环n次。【10-1】输入一个字符串并将它输出,以ctrl+z组合键表示输入完毕,要求将输入的字符串中多于1个的连续空格符合并为1个。【10-23】输入两个有序数组,输出在两个数组中都出现的元素,即两数组的子集。【10-22】输入两个数组,输出在两个数组中都出现的元素,即两数组的子集。【10-24】编写一个算法,计算输入的一个字符串中所包含的单词的个数。

dream_aleaf的博客 722

LC-3 机器语言 指令集

生活本就沉闷,但跑起来就有风

笔记 1万+

C语言数据结构学习大纲

C语言数据结构学习大纲已经覆盖了从基础到高级的数据结构与算法知识,适合从初学者到高级开发者的不同需求。通过不断的练习与实际应用,将能够掌握复杂的算法和数据结构,提升编程能力,并为面试、工作中的实际开发打下坚实的基础。

小宝哥Code的专栏 1970

游戏脚本开发避坑:Python调用OP模块实现阴阳师后台操作的5个关键点

本文深入探讨了使用Python调用OP模块开发《阴阳师》后台自动化脚本的5个核心避坑点。重点解析了窗口绑定、后台截图与图像识别、鼠标键盘模拟、脚本稳定性以及性能优化等关键环节的常见问题与实战解决方案,帮助开发者高效实现稳定的游戏后台挂机功能。

u0v1w2x3的博客 588

机理模型与数据模型融合的方式

风电场的发电量受到多种因素的影响,包括但不限于风速、温度、空气密度等。尽管这些环境变量可以直接测量并用作模型输入,但它们与发电量之间的关系往往是复杂的非线性关系。通过引入基于物理定律计算出的理论发电量作为额外特征,可以为数据驱动模型提供更丰富的信息,从而提高预测精度。在这个案例中,我们将使用贝茨理论(Betz Limit)来计算风电场的理论发电量,并将其作为一个新的特征添加到数据集中。然后,我们使用增强后的数据集训练一个简单的神经网络模型来进行发电量预测。

金石软件 4805

嵌入式C语言和数据结构面试题

本文总结了C语言的核心知识点,包括编译过程、变量与常量、数据类型、指针等关键概念。详细解析了从源码到可执行的四个编译阶段,变量声明与定义的区别,全局/局部变量的特性对比,指针运算规则,以及数组与指针的异同。特别强调了宏定义与typedef的区别、条件编译的应用场景、枚举类型的使用优势,并深入比较了常量指针与指针常量的本质差异。这些内容涵盖了C语言程序设计中常见的技术要点和易混淆概念,为开发者提供了清晰的语法参考和实用的编程指导。

weixin_45417754的博客 918

算法设计与分析 0-1背包问题 动态规划解法【超详细】

0-1背包问题 问题描述 给定i个物品和一个容量为的背包,物品的重量是Wi,其价值为Vi 物品个数为i,背包容量为C。 如何选择装入背包内的物品,使得装入背包中的物品的总价值最大? 其中,每种物品只有全部装入背包或不装入背包两种选择。 物品不能分割,不能重复使用。 动态规划算法思路 首先建立一个数组B[i][c],最上面一行表示背包容量,最左边一列表示物品编号,中间填充的数值表示当当前背包容量为C...

寒泉 4万+

【数据结构】C语言数据结构之栈

本文全面介绍了栈这种"后进先出"的线性数据结构。首先讲解了栈的基本概念、核心操作(压栈/出栈)和结构示意图。然后详细分析了栈的两种实现方式(数组和链表),重点展示了数组实现的动态扩容方案,包括初始化、销毁、压栈、出栈等核心接口的C语言实现。接着通过两个经典应用案例(括号匹配问题和用栈实现队列)深入解析栈的实际应用场景和解题思路。最后提供了栈相关的典型面试题,帮助巩固对栈特性的理解。全文从理论到实践,系统性地讲解了栈的核心知识体系。

2501_92613722的博客 1672

全功能tgbot/Telegram机器人多功能有后台版源码

trx兑换 闪兑 关键字监控 群管 usdt监控 余额查询 推广分享 等几乎常见的tg机器人功能都有。全功能tgbot/telegram机器人多功能有后台版源码-打包好的可以直接上手。

百创科技 2699

一张图读懂 SAP S/4HANA Cloud 与 SAP BTP 的扩展版图

本文解析了SAP S/4HANA Cloud的扩展技术谱系,提出扩展应分为on-stack(系统内)和side-by-side(并行)两种路径,并沿着低代码到专业代码的能力梯度进行分层。on-stack扩展包括面向业务人员的Key User Extensibility和面向开发者的Developer Extensibility,强调贴近核心业务对象;side-by-side扩展则依托SAP BTP平台,提供SAP Build低代码工具、CAP开发框架和ABAP云环境三种方案,支持解耦创新。文章通过五个真实案

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 248

100道经典的c语言面试题

100 条经典C语言笔试题目   题目来源: 1、中兴、华为、慧通、英华达、微软亚洲技术中心等中 外企业面试题目; 2、C 语言面试宝典(林锐《高质量编程第三版》)。 说明: 1、部分C 语言面试题中可能会参杂部分和C++ 相关的知 识,为了保持题目的灵活性故保留,但选题最终还是 会以C 语言题目为主体; 2、以上公司的面试题目已成为国内中小型企业公司出题 模板; 3、由于本人的能力有限加上...

wjw博客 14万+

高通GAIA V3命令参考手册的研读学习(15):自定制命令的详细工作描述

里的示例一样,手机APP发出这个GetManuFacturer的命令发0x0000,那么耳机回复:0x8000, 同时在回复的playload部分,用最多15个字节的ACSII码来表达制造商信息(因此最多15个字母)。那么这个APP在通过GAIA协议控制这个耳机时,不仅可以通过前面讲过的vendor ID来识别,也可以更进一步通过这个命令来识别这个耳机,到底是不是本公司的。通过这个可变长度的playload,真的是可以传达极多的事先约定的信息,相当的灵活,真是不错!这个命令用来得到设备的制造商信息。

qq_37191547的博客 398

全网最全100道C语言高频经典面试题及答案解析:C语言程序员面试题库分类总结

全网最全100道C语言高频经典面试题及答案解析:C++程序员面试题库分类总结

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 3308

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C语言面试题大汇总之华为面试题

C语言面试题大汇总之华为面试题                            Eddy整理 1、局部变量能否和全局变量重名?    答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变

蜗牛之旅 2114

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

搬砖:100道c语言面试题

100道c语言面试题 2018年01月12日 18:52:35 cocos+unity+服务器 阅读数:9166 https://blog.youkuaiyun.com/themagickeyjianan/article/details/79047242 题目来源: 1、中兴、华为、慧通、英华达、微软亚洲技术中心等中 外企业面试题目; 2、C 语言面试宝典(林锐《高质量编程第三版》)。 说明: 1、部...

hunter 5488

2018C语言及数据结构面试题

1、如何判断合法的IP地址,尽可能考虑各种情况 (腾讯面试题) 规则有: 正确的“192.168.3.44” (1)由数字字符和点号组成 (2)第一个数字字符不能是0 (3)数字字符和点号的存放 (4)每个数字的范围是0~255 代码如下: static int CountPoint(const char *str) { int count = 0; while(*str != ‘\0’) { i...

w1216702236的博客 2704

c语言基础面试题

原文: c语言基础面试题 链接:http://bbs.51cto.com/thread-811556-1.html 1. 写一个函数判断当前系统的字节序。 2. 如何用c语言执行shell命令,如何实现管道和重定向功能?要求不能使用system()函数。 3. 函数的自动变量保存在哪里?如果一个int型自动变量未初始化,它的值会是0吗?

xww810319的专栏 5477

【C语言面试题精选及详细解答】

宏定义 #define 是在预处理阶段进行文本替换,没有类型检查,且每次出现时都会进行替换,可能导致代码体积变大。const定义是在编译阶段进行,有类型检查,且编译器通常会将const常量保存在符号表中,而不是分配内存空间。#define PI3.14159可以使用sizeof运算符来计算数组的总大小,然后除以单个元素的大小来得到数组的元素个数。sizeofsizeof0内存泄漏是指在程序运行过程中,动态分配的内存没有被正确释放,导致这部分内存无法被再次使用。

摇光是颗星 1687
上一篇: ascx aspx ashx asmx 为后缀的文件的作用
下一篇: 部分C++ 面试题
十八道胡同
博客等级 码龄20年 848粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值