精华内容
下载资源
问答
  •  实例095 数组添加一个元素 112  实例096 数组添加一个数组 113  实例097 不改变长度删除数组的元素 115  实例098 删除数组元素后改变其长度 116 4.2 常用数组排序算法 117  实例099 使用选择...
  • 9.4.2 引用一个返回的堆对象 138 9.4.3 引用一个按别名返回的堆对象 140 9.4.4 哪里创建,就哪里释放 141 9.5 总结 142 第10章 深入函数 144 10.1 函数重载 144 10.1.1 普通函数的重载 144 ...
  • 实例164 设置图像中指定位置的像素 230 实例165 图像文件实现自定义标记 232 实例166 获取指定点的RGB 234 4.9 图像工具 235 实例167 获取图片类型 235 实例168 简单画图程序 236 实例169 看图...
  • 实例271——实现应用程序系统只能运行一个实例 实例272——获取所有打开窗口程序的句柄、类名及标题 实例273——创建和终止进程 实例274——三种方法实现启动其他的应用程序 实例275——使用剪贴板实现程序...
  • 实例271——实现应用程序系统只能运行一个实例 实例272——获取所有打开窗口程序的句柄、类名及标题 实例273——创建和终止进程 实例274——三种方法实现启动其他的应用程序 实例275——使用剪贴板实现...
  • 数组下标设为哈希表的键值key,把数组的每一个数字设为哈希表的value,每个下标及数组该下标对应的数字组成键值-的配对。实现O(1)的查找。 如P186 面试题35:第一个只出现一次的字符 字符

    数据结构重点:数组、字符串、链表、树、栈、队列

    数组:占据一块连续的内存并按顺序存储数据。

    创建数组时,先指定数组大小,再根据大小分配内存。【预先分配内存】

    1.数组实现简单哈希表

    数组下标设为哈希表的键值key,把数组中的每一个数字设为哈希表的值value,每个下标及数组中该下标对应的数字组成键值-值的配对。实现O(1)的查找。
    如P186 面试题35:第一个只出现一次的字符
    在字符串中找出第一个只出现一次的字符。如输入:“abaccdeff”,则输出‘b’。
    思路:统计每个字符出现在该字符串的次数,用一个数据结构存放每个字符出现的次数,完成字符到数字的映射,可用哈希表。
    该题目中只需一个简单的哈希表就可实现。
    /*
    * 利用哈希表算法,扫描两次字符串,
    * 第一次记录相同位置的字符出现的次数,
    * 第二次找到第一个次数为1的字符并返回。时间复杂度为O(n),空间效率O(1)。
    */
    #include <iostream>
    #include <string>
    using namespace std;
    
    char FirstNotRepeatingChar(char* pInString)
    {
    	if (pInString == NULL)
    		return 0;
    	//定义并初始化哈希表
    	const int tableSize = 256;
    	int hashTable[tableSize];
    	for (int i = 0; i < tableSize; ++i)
    		hashTable[i] = 0;
    	
    	//第一遍遍历,hash表记录每个字符出现的次数
    	char *pHashKey = pInString;
    	while (*pHashKey != '\0')
    	{
    		hashTable[*pHashKey]++;
    		pHashKey++;
    	}
    	//指针重新指向字符串的第一个字符
    	pHashKey = pInString;
    	//第二遍遍历,返回第一个次数为1的字符
    	while (*pHashKey!='\0')
    	{
    		if (hashTable[*pHashKey] == 1)
    			return *pHashKey;
    		pHashKey++;
    		
    	}
    	//没有只出现一次的字符
    	//cout << ""<<endl;
    	return 0;
    }
    
    int main(int argc, char* argv[])
    {
    	cout << "请输入测试字符串:" << endl;
    	const int maxSize = 256;
    	char str[maxSize];
    	cin >> str;
    	cout << "第一个只出现一次的字符:";
    	cout << FirstNotRepeatingChar(str) << endl;
    	system("pause");
    	return 0;
    
    }
    当需要判断多个字符是不是在某个字符串中出现过,或统计多个字符在某个字符串中出现的次数,可以考虑这种方法,基于数组创建简单的哈希表。

    2. 相关题目练习

    ①定义一个函数,输入两个字符串,从第一个字符串中删除在第二个字符串中出现的所有字符。如“we are happy”和“weppy”,输出“ are ha”

    快慢指针的方法,初始化,快慢指针都指向第一个字符。
    循环过程:如果快指针指的是不需要删除的字符,将值赋给满指针所指的值后,快指针同时+1,;
       如果快指针指向待删除字符,则直接+1。当快指针指向\0,则终止。
    /*
    * 快慢指针从第一个字符串中删除第二个字符串内容
    * 
    */
    #include <iostream>  
    using namespace std;
    
    const int Tablesize = 256;
    
    void Delete(char * first, char* second)
    {
    	char hashTable[Tablesize];
    	for (int i = 0; i<Tablesize; i++)
    	{
    		hashTable[i] = 0;
    	}
    
    	char* p = second;
    	while (*p)
    	{
    		hashTable[*p] = 1;
    		p++;
    	}
    
    	char* fast = first;
    	char* slow = first;
    	while (*fast)
    	{
    		if (hashTable[*fast] == 0)
    		{
    			*slow = *fast;
    			slow++;
    		}
    		fast++;
    	}
    	*slow = '\0';
    }
    
    
    void main()
    {
    	char first[] = "I LOVE U";
    	char second[] = "IU";
    	Delete(first, second);
    	cout << first << endl;
    	system("pause");
    }


    展开全文
  • 包含可以用来模拟has-a关系,其中一个类包含另一个类的对象。例如,汽车有马达。也可以使用 私有继承和保护继承来模拟这种关系。本章说明了各种方法之间的区别。同时,读者还将学习类模板,它 使程序员能够使用...
  • 包含可以用来模拟has-a关系,其中一个类包含另一个类的对象。例如,汽车有马达。也可以使用 私有继承和保护继承来模拟这种关系。本章说明了各种方法之间的区别。同时,读者还将学习类模板,它 使程序员能够使用...
  • 包含可以用来模拟has-a关系,其中一个类包含另一个类的对象。例如,汽车有马达。也可以使用 私有继承和保护继承来模拟这种关系。本章说明了各种方法之间的区别。同时,读者还将学习类模板,它 使程序员能够使用...
  • C#.net_经典编程例子400

    热门讨论 2013-05-17 09:25:30
    206 4.8 图像识别 207 实例143 查看图片的像素 207 实例144 获取指定点的RGB 207 4.9 图像工具 208 实例145 获取图片类型 208 实例146 简单画图程序 209 实例147 看图工具 213...
  • ② 退栈运算:取出栈顶元素并赋给一个指定的变量; ③ 读栈顶元素:将栈顶元素赋给一个指定的变量。 1.4 队列 1. 队列的基本概念 队列是只允许一端进行删除,另一端进行插入的顺序表,通常将允许删除的这一端...
  • 实例244 使用内联接选择一个表与另一个表中行相关所有行 7.16 外联接查询 实例245 Left Outer Join查询——左外联接查询 478 实例246 Right Outer Join查询——右外联接查询 479 实例247 使用外联接进行多表...
  • 请求的长度一个INT中指定. 2) 每个服务器通常会向多种客户提供服务, 例如, TS要同时向CP, NP提供服务, CP要向NP和其他CP提供服务, 同时还是其他CP, TS, SP的客户. 3) 每个服务器为客户服务时, 通常是长期的, 会...
  • 2.5.2 某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有 26台计算机,每个子公司在一个网段,则子网掩码应设为? 2.5.3 与10.110.12.29mask 255.255.255.224属于同一网段的主机IP地址是? ...
  • 4.7 实例研究:用数组计算平均数和模 4.8 查找数组:线性查找与折半查找 4.9 多下标数组 4.10 有关对象的思考:确定类的行为 小结 术语 自测练习 自测练习答案 练习 递归练习 第5章 指针与字符串 5.1 ...
  • 我们知道在一个排好序的数组进行二分查找的时间复杂度是 O(logn), 是非常高效的(40亿量级的数据,只需要32次左右的查找);所以将二分查找的思想应用二叉树,就是一颗二叉查找...
  • 数据结构课程设计

    2014-06-03 13:26:05
    鞍点问题: 若矩阵A的某一元素A[i,j]是第i行的最小值,而又是第j列的最大,则称A[i,j]是矩阵A一个鞍点。写出一个可以确定鞍点位置的程序。 稀疏矩阵转置: 输入稀疏矩阵每个元素的行号、列号、,...
  • 实例225 使用内连接选择一个表与另一个 行相关的所有行 6.18 外连接查询 实例226 left outer join查询 实例227 right outer join查询 实例228 使用外连接进行多表联合查询 6.19 利用in进行查询 实例229 用in查询...
  • 实例245 ListBox控件中查找指定项 实例246 将数据库数据添加到组合框中 实例247 ListBox控件间交换数据 实例248 借助绑定控件实现数据选择录入 11.6 ListView控件应用 实例249 ListView控件间的数据移动 ...
  • C++标准程序库STL.pdf

    千次下载 热门讨论 2013-02-26 11:05:11
    是所有STL头文件最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以认为每个函数很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、...
  • 实例245 ListBox控件中查找指定项 实例246 将数据库数据添加到组合框中 实例247 ListBox控件间交换数据 实例248 借助绑定控件实现数据选择录入 11.6 ListView控件应用 实例249 ListView控件间的数据移动 ...
  • 实例245 ListBox控件中查找指定项 实例246 将数据库数据添加到组合框中 实例247 ListBox控件间交换数据 实例248 借助绑定控件实现数据选择录入 11.6 ListView控件应用 实例249 ListView控件间的数据移动 ...
  • 实例095 数组添加一个元素 112 实例096 数组添加一个数组 113 实例097 不改变长度删除数组的元素 115 实例098 删除数组元素后改变其长度 116 4.2 常用数组排序算法 117 实例099 使用选择排序法对一维数组...
  • C语言编程要点

    2017-09-18 00:10:37
    3.8. 1怎样查找链表中的数据? 53 第4章 数据文件 59 4.1. 当errno为一个非零时,是否有错误发生? 59 4.2. 什么是流(stream)? 59 4.3. 怎样重定向一个标准流? 60 4.4. 怎样恢复一个重定向了的标准流? 60 4.5. ...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    <br>实验四 综合(课程设计) 内容及步骤: 1、假定一维数组a[n]的每个元素[0,200]区间内,用C++编写一个算法,分别统计出落[0,20],[21,50],[51,80],[81,130],[131,200]等各区间内的元素...
  • 同学的打包代码

    2012-06-22 13:48:26
    能够完成对使用适当的查询语言从一个或多个表中查找相关信息。 4、 矩阵类设计 定义Matrix类,参照实现: (1) 任意行数,列数矩阵的构建 (2) 常数矩阵 (3) 转置矩阵 (4) 矩阵加法,减法,乘法 (5) 矩阵...
  • 答: (1)函数体,一个被声明为静态的变量这一函数被调用过程维持其不变。 (2) 模块内(但函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局...
  • EasyAndroid 包含各种工具类的集合,会不定期更新,欢迎贡献code 使用方法: 2.0.0以后,放弃了support库,请使用AndroidX ...resource2Bitmap : 根据资源ID获取一个指定大小的bitmap getBitmapFromFile ...
  • java常用工具类的使用

    热门讨论 2012-03-19 20:11:37
    Java程序设计过程,对应日期和时间的格式化,还有一个简单的格式化方式,就是java.text.SimpleDateFormat,该类中用字符串指定日期和时间的格式,字符串的字符称为模式字符,模式字符区分大小写。常见的模式...
  • 实现,assertion就是程序的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的为true;如果该为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...

空空如也

空空如也

1 2 3 4
收藏数 65
精华内容 26
关键字:

在简单链表中查找一个指定值