错题集锦
文章平均质量分 56
BIG_GENERAL_DD
好好学习,天天向上.
展开
-
关于查找算法错题集锦
1、设串长为n,模式串长为m,则KMP算法所需的附加空间O(m)分析:KMP算法时间复杂度为O(m+n),空间复杂度为O(m).因为KMP算法涉及到next数组的存储,且next数组是基于模式串长度计算的。 BF算法(普通匹配算法):时间复杂度O(m*n);空间复杂度O(1)KMP算法:时间复杂度O(m+n);空间复杂度O(n) 2、cin遇到空格符,结束输入。原创 2017-05-12 10:15:03 · 1385 阅读 · 1 评论 -
数组、链表、字符串错题集锦
1、链表的结点信息包含数据域和指针域,相同数据下,数组的大小是链表大小的子集。2、广义表的表头为空,则此广义表亦为空表。(错)分析:广义表的表头为空,并不代表该广义表为空表。例如:广义表()和(())不同。前者是长度为0的空表,对其不能做求表头和表尾的运算;而后者是长度为l的非空表(只不过该表中惟一的一个元素是空表),对其可进行分解,得到的表头和表尾均是空表() 一原创 2017-05-23 17:16:27 · 514 阅读 · 0 评论 -
C++学习(15)
一、静态成员的特点:(1)static数据成员在类的内部声明,但只能在类的外部定义,在类的外部不能指定static,在类的定义时候进行初始化;(2)static数据成员只能在类的外部进行初始化(特例:当整型const static数据成员被常量表达式初始化时,就可以在类的内部进行初始化,但还需要在外部进行定义)。(3) static数据成员可以是该成员所属的类类型,而非static数据原创 2017-05-24 12:33:12 · 606 阅读 · 0 评论 -
C++学习(16)
1、 int a=5,则++(a++)的值是“ 编译错误”分析:a++返回一个值也就是5,++操作符只能作用于变量,而不能是一个数字。此处的a++是表达式,++不能对表达式作自增。 2、 const int *x;//const修饰的是int *x,指针变量x指向整型常数,x值可以改变,但不能试图改变指向的整型常数。(所指对象不能改变,指针可以改变) int * const原创 2017-05-24 15:20:52 · 946 阅读 · 0 评论 -
C++学习(17)
1、 字符串常量应该是个常字符指针,就是一个数组名,求sizeof得到的是字符串长加1('\0'),而对string类型求sizeof VS2015得到28,因为string类型实际上是一个类类型,所以一个字符串常量不可能是string类型; 2、 定义字符串,所以一定要有'\0';定义一个字符数组的话'\0'并不是必须的; 3、 下列程序中,K的值为:6enum {a,原创 2017-05-24 17:03:16 · 486 阅读 · 0 评论 -
链表学习(1)
1、广义表LS=(a1,a2……an)非空,则a1是LS表头,其余元素组成的表(a2,……an)称为LS表尾。非空广义表的表头是一个元素,可以是原子也可以是一个子表,而表尾则必定是子表。Eg:LS(a,b),表头为a,表尾是(b)而不是b。 2、Class java.util.ArrayList:元素在集合中有序,指的是元素插入过程中记录了元素的插入顺序。 ArrayL原创 2017-05-11 09:51:20 · 363 阅读 · 0 评论 -
链表学习(2)
1、(1)对于双向循环链表,在p指针所指的节点之后插入s指针所指节点的操作应为:s->left=p;s->right=p->right;p->right->left=s;p->right=s; 分析:双向链表的插入顺序,先搞定插入节点的前驱和后继,再搞定后节点的前驱,最后搞定前节点的后继。 (2)补充:在非空双向循环链表中q所指向的结点前插入一个由p所指的链结点的过原创 2017-05-12 12:51:05 · 1611 阅读 · 0 评论 -
链表学习(3)
1、线性结构与非线性结构,主要看元素之间的关系。若是一对一关系就是线性表,如果不是一对一就是非线性。 2、LS=((a,b,c),(d,e,f));tail(LS)=((d,e,f));head(tail(LS))=(d,e,f);tail(head(tail(LS)))=(e,f);head(tail(head(tail(LS))))=e;任何一个非空广义表的表头是表原创 2017-05-13 12:54:26 · 2824 阅读 · 0 评论 -
线性表学习
1、 Java语言的下面几种数组复制方法效率:System.arraycopy > clone > System.copyOf> for2、 short a[100],sizeof(a)返回:200short大小为2字节; sizeof返回的值表示的含义(单位字节)数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地原创 2017-05-14 11:20:55 · 326 阅读 · 0 评论 -
队列学习
1、循环队列的存储空间为Q(1:35),初始状态为front=rear=35.经过一系列入队与退队后,front=15,rear=15,则循环队列中的元素个数: 0 或 35分析:顺序存储结构的循环队列。假设循环队列的队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度。(1)入队时队尾指针前进1:(rear+1)% QueueSize;(2)出队时原创 2017-05-13 11:43:16 · 1862 阅读 · 0 评论 -
队列学习(2)
1、 在链队列中,即使不设置尾指针也能进行入队操作。分析:使用不设置尾指针的链表作为链队列的存储结构,在进行入队操作的时候需要遍历整个链队列至队尾,然后再进行插入。这是可行的,但是效率下降。如果只使用一个指针又要保持效率的话,可以使用只带尾指针的循环单链表作为存储结构,这样出队和入队的开销都是O(1).2、 设循环队列存储空间Q(1:35),初始状态为front原创 2017-05-14 11:21:37 · 11510 阅读 · 0 评论 -
字符串学习(1)
1、串可以用顺序存储,也可以用链式存储。STL中,vector为顺序,list为链式。空串是不含任何字符的串,即空串的长度为0. String str=””;空格串是由空格组成的串,其长度等于空格的个数。String str=” “; 2、char s[ ]=”\\123456\123456\t”;printf(“%d\n’,strlen(s));输出结果为12分析原创 2017-05-09 13:43:11 · 742 阅读 · 0 评论 -
字符串学习(2)
1、串长度是指串中所有字符的个数。字符串的两种基本存储方式是顺序存储和链式存储,字符串或串是由零个或多个字符组成的优先序列,是编程语言中表示文本的数据类型。通常串的整体作为操作对象。 2、在给定文件中查找与设定条件相符字符串的命令为?grepGrep命令作为一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。grep 全称 Global Regular expr原创 2017-05-10 12:13:34 · 558 阅读 · 0 评论 -
进程学习(1)
1、int main(){ int i; for(i=0;i<2;i++) { fork(); printf("-"); }return 0;}会有8个“-”分析:一共调用了6次printf,但是会输出8个-。因为父进程的输出缓冲也会被子进程复制。分析二:本来是有6个,但是由于printf有缓冲,在输出时会将-放大缓冲区,从而调用fork()时,会复制缓冲区的原创 2017-05-08 16:19:07 · 273 阅读 · 0 评论 -
C/C++学习(2)关于strcpy、strcat函数使用
strcpy、strcat函数使用注意题目来源:点击打开链接//下列程序的打印结果是?char p1[15]= "abcd",*p2= "ABCD", str[50]= "xyz"; strcpy(str+2,strcat(p1+2,p2+1)); printf("%s",str);分析思路:strcat(x,y)将x,y字符串连接,str原创 2017-05-05 13:41:46 · 1087 阅读 · 0 评论 -
C/C++学习(3)#pragma pack(4) vs. #pragma pack(8)
链接:https://www.nowcoder.com/questionTerminal/e2ef573a02bd46659fd683a805284c80来源:牛客网struct One{ double d; char c; int i;}struct Two{ char c; double d; int i;}在#prag转载 2017-05-05 13:49:45 · 1046 阅读 · 0 评论 -
C/C++学习(4)函数与指针取地址符
题目来源:点击打开链接有如下一段程序:int f1(float);int f2(char);int f3(float);int f4(float);int (*pf)(float);则以下不合法的是:()int (*p)(float)=&f1;pf=&f4;pf=&f2;pf=f3;分析:函数指针变量的声明方法原创 2017-05-05 14:04:12 · 1811 阅读 · 0 评论 -
C/C++学习(5)友元类分析
题目来源:点击打开链接类A是类B的友元,类C是类A的公有派生类,忽略特殊情况则下列说法正确的是()类B是类A的友元类C不是类B的友元类C是类B的友元类B不是类A的友元分析:(1)友元关系不能被继承。(2)友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。(3原创 2017-05-05 14:11:10 · 1062 阅读 · 0 评论 -
C/C++学习(6)辨析#include<> 和 #include" "
对于#include 和 #include “filename.h”,#include 只搜索标准库路径#include 搜索范围比#include “filename.h”小两者可能等价首先 #include#include :表示只从从标准库文件目录下搜索,对于标准库文件搜索效率快。#include" " :表示首先从用户工原创 2017-05-05 21:37:17 · 456 阅读 · 0 评论 -
C/C++学习(7)strcpy函数与while循环
题目来源:点击打开链接What is the result of the following program?char* f(char *str, char ch) { char *it1 = str; char *it2 = str; while (*it2 != '\0') { while (*it2 == ch) { it2++; }转载 2017-05-05 21:50:07 · 645 阅读 · 0 评论 -
C/C++学习(8)变量在内存中的存储位置
int a=0;class someClass{ int b; static int c;};int main(){ int d=0; someClass *p=new someClass(); return 0;}关于以上代码中的变量在内存中的存储位置描述不正确的是()A:以上都不对B:存在堆区C:存在栈区转载 2017-05-05 22:05:11 · 2588 阅读 · 0 评论 -
C/C++学习(10)关于数组、内联函数、虚函数的错题集锦
1、顺序存储方式不仅用于存储线性结构,还可以用于存放非线性结构,如完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式。 2、数组名有两重属性:1)数据结构的一个对象(数据结构为当前数组),在java中数组就是一个对象。2)某些情况下自动退化成指向第一个元素的常量指针。 3、有两个从小到大排好序的数组,长度分别为N和M,将这两个数组合并为一个有序数组,最好的情况是Mi原创 2017-05-08 15:46:54 · 461 阅读 · 0 评论 -
C++学习(18)
1、编译下列程序,分析运行结果:#include#includeusing namespace std;void fun(int *p1,int *p2,int *s) { //s=(int *)malloc(sizeof(int)); //cout<<s<<endl; *s = *p1 + *(p2++);// cout<<*s;}int main() { int a[2原创 2017-05-24 22:41:35 · 535 阅读 · 0 评论 -
树学习(1)
1、 二叉树是非线性数据结构,所以顺序存储结构与链式存储结构都能存储。(分析:普通二叉树可以用链表存储,对于完全二叉树由于树本身的特性,一个节点标号为i,则其左孩子为2i+1,右孩子为2i+2,父节点为(i-1)*2 由此公式可以通过数组来存储。数组为顺序存储结构,链表为链式存储结构。 2、 完全二叉树中,非叶节点最多没有右孩子。没有左孩子的话,就原创 2017-05-15 13:33:22 · 827 阅读 · 0 评论 -
线性表学习(2)
1、面向对象程序设计中,关于数组:1)原生类是指未被实例化的类,比如类型,但是数组一般指实例化,被分配空间的类,不属于原生类。2)对象的特点是封装了一些数据,同时提供了一些属性和方法,从整个角度来看,数组是对象。3)数组的大小确定之后不可以改变。 2、三元组转置:(1)将数组的行列值相互交换;(2)将每个三元组的i和j相互交换;(3)重排三元组直接的次序便可实现矩阵原创 2017-05-15 13:58:44 · 412 阅读 · 0 评论 -
字符串学习(3)
1、grep命令是一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。全称:global regular expression print,表示全局正在表达式版本,使用权限是所有用户。Grep用来查找字符串,find用来查找单个字符。 2、卡特兰数公式h(n)=C(2n,n)/(n+1),适用于出栈情况求和。3、哈夫曼编码是一种无损二进制编码算法,其加权原创 2017-05-15 15:38:15 · 292 阅读 · 0 评论 -
栈的学习(1)
1、栈内存操作系统来分配和释放;堆内存由程序员自己来分配和释放;2、栈有系统自动分配,只要栈剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。3、栈的空间有限,对堆有很大的自由存储区; 栈的大小是固定的,堆的大小受限于系统中有效的虚拟内存。“堆的使用容易产生碎片“是因为垃圾回收容易导致堆产生碎片。原创 2017-05-15 15:50:04 · 268 阅读 · 0 评论 -
软件工程学习(1)
关于软件工程整体框架的学习可以参考这篇博客,是自己在复习面试宝典时候所撰写的总结点击打开链接1、 需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。软件需求规格说明书是描述需求中的重要文档,是软件需求分析的主要成果。2、 软件需求规格说明应重点描述软件的目标,软件的功能需求、性能需求、外部接口、属性及约束条件等。功能需求是软件需原创 2017-05-25 22:01:57 · 300 阅读 · 0 评论 -
树学习(2)
1、 一颗哈夫曼树的带权路径长度等于其中所有分支结点的权值之和。(错误)分析:树的带权路径长度:定义为树中所有叶结点的带权路径长度之和;(即等于所有结点(叶结点+分支结点)的权值之和,而不是分支结点权值之和)。一棵树的权,也就是根结点的权,等于叶节点的权值之和。 结点带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。 叶节点:度为0;分支结点:度不为原创 2017-05-16 10:15:21 · 2597 阅读 · 3 评论 -
C++学习(21)
1、#includeusing namespace std;void foobar(int a,int*b,int **c) { int *p=&a; *p=101; *c=b; b=p;}int main(){ int a=1; int b=2; int c=3; int原创 2017-05-26 12:14:01 · 424 阅读 · 0 评论 -
字符串学习(4)
1、 关于KMP算法:(关于KMP算法学习可参考如右链接点击打开链接、点击打开链接)1) 效率不一定比普通算法搞;2) Next值跟主串没有关系;3) 计算next值时,模式串也可以看做主串; 2、 KMP算法中,长为n的字符串匹配长度为m的子串的复杂度为O(m+n)分析:KMP算法通过提前处理出的next数组,在原创 2017-05-16 16:03:13 · 837 阅读 · 0 评论 -
C++学习(22)
1、 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为:auto(自动)2、定义符号常量pi. Const float pi=3.1415926f;(正确)3、 C语言长整型数值在计算机中占用字节数是:4分析:一般我们把 short称为短整型,把 long称为长整型,把 long long称为超长整型,把 int称为整型。unsigned打头原创 2017-05-26 15:43:32 · 611 阅读 · 0 评论 -
C++学习(23)
1.分析下述代码运行:#includeusing namespacestd;int main(){ int a[10]={0,1,2,3,4,5,6,7,8,9}; int *p=a; cout<<p[6]<<""<<*(a+6)<<" "<<*(p+6)<<""<<p+6<<endl; return 0;}2、用关键原创 2017-05-26 17:30:13 · 644 阅读 · 1 评论 -
线性表学习(3)
1、 线性表L=(a1,a2……an),除第一个元素和最后一个元素外,其余每个元素都有且仅有一个直接前驱和直接后继。 2、 队列添加元素在队尾,删除元素在队头。添加元素尾指针rear+1;删除元素头指针front+1; 循环队列中元素个数计算方法是固定的,即(尾-头)%长度,但由于是循环队列所以尾可能会小于头,所以要加上长度,使尾-头保持是正整数,然后再对长原创 2017-05-18 10:07:05 · 521 阅读 · 0 评论 -
图学习(1)
1、 连通图上各边权值均不相同,则该图的最小生成树是唯一的。(是自由树,即根结点不确定) 2、 用n表示图中顶点数目,e表示边或弧的数目:(1) 对于无向图,e的取值范围是0~N(N-1)/2;有N(N-1)/2条边的无向图叫完全图。(2) 对于有向图,e的取值范围0~N(N-1);相应的有N(N-1)条边的有向图叫有向完全图原创 2017-05-18 12:58:17 · 3725 阅读 · 3 评论 -
链表学习(5)
1、 散列法存储的基本思想是由关键字的值决定数据的存储位置。 2、(非空)广义表中: 1)表头head可以是原子或一个表; 2)表尾tail一定是一个表; 广义表的同级元素(直属于同一个表中的各元素)具有线性关系。 广义表难以用顺序表存储结构;广义表可以是一个多层次结构; 广义表:广义表是线性表原创 2017-05-19 12:07:31 · 560 阅读 · 0 评论 -
树学习(4)
1、二叉排序树(二叉搜索树)中,最小值结点的(左孩子一定为空指针)分析:二叉排序树:左中右。 2、软件生存周期(SDLC,软件生命周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试与测试、验收与运行、维护升级到废弃,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,原创 2017-05-19 12:52:43 · 1741 阅读 · 0 评论 -
C++学习(24)
1.下列程序共调用x(int n)有 18次。#includeusing namespacestd;int cnt=0; int x(int n) { cnt++; if(n<=3) { return 1; } else原创 2017-05-31 10:47:51 · 562 阅读 · 0 评论 -
C++学习(11)
1、 在C语言中,以“e”或“E”后跟一个整数来表示以“10”为底数的幂数。2.3026可以表示为0.23026E1、2.3026e0、23.026e-1。C语言语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。如e3、5e3.6、.e、e等都是非法的指数形式。注意:在字母e或E的前后以及数字之间不得插入空格。 2、 使用setw()对数据进行格式输出时,原创 2017-05-19 16:33:38 · 401 阅读 · 0 评论 -
C++学习(25)
1.(1)32位系统下任何类型指针的长度都是4个字节;(2)指针的数据类型声明的是指针实际指向内容的数据类型;(3)野指针是指向未分配或者已释放的内存地址;(4)野指针,也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。 “野指针”不是NULL指针,是指向“垃圾”内存的指针。野指针的成因主要有两种: 1)、指针变量没有被初原创 2017-05-31 14:50:22 · 916 阅读 · 0 评论