小编AGe*_*eek的帖子

C编程中无效指针的概念

是否可以在C编程语言中取消引用void指针而不使用类型转换?

另外,有没有任何方法可以概括一个可以接收指针并将其存储在void指针中的函数,并且通过使用该void指针,我们可以创建一个通用函数吗?

例如:

void abc(void *a, int b)
{
   if(b==1)
      printf("%d",*(int*)a);     // If integer pointer is received
   else if(b==2)
      printf("%c",*(char*)a);     // If character pointer is received
   else if(b==3)
      printf("%f",*(float*)a);     // If float pointer is received
}
Run Code Online (Sandbox Code Playgroud)

我想在不使用if-else语句的情况下使这个函数变得通用 - 这可能吗?

此外,如果有很好的互联网文章解释了无效指针的概念,那么如果你能提供这些URL会很有用.

是否可以使用void指针进行指针算术?

c void-pointers

127
推荐指数
5
解决办法
20万
查看次数

如何在O(n)时间内找到在SORTED数组中出现奇数次数的数字?

我有一个问题,我试着一次又一次地思考它......但是没有得到什么,所以在这里发布问题.也许我可以得到一些其他人的观点,试着让它发挥作用......

问题是:我们得到一个SORTED数组,它由一组偶数发生的值组成,除了一个,发生ODD次数.我们需要在log n时间找到解决方案.

在O(n)时间内很容易找到解决方案,但在log n时间执行它看起来相当棘手.

c algorithm asymptotic-complexity

39
推荐指数
5
解决办法
4562
查看次数

Boyer Moore算法理解与实例?

我在理解Boyer Moore字符串搜索算法时遇到了问题.

我正在关注以下文件.链接

我无法确定delta1和delta2的确切含义,以及它们如何应用于查找字符串搜索算法.语言看起来有点模糊..

如果有人可以帮助我理解这一点,那将非常有帮助.

或者,如果您知道任何其他易于理解的链接或文档,请分享.

提前致谢.

algorithm string-search

31
推荐指数
2
解决办法
4万
查看次数

如何查找整数数组的大小

如何在C中查找整数数组的大小

任何方法都可用而不遍历整个数组一次,以找出数组的大小.

c arrays

25
推荐指数
2
解决办法
12万
查看次数

查找具有相同数量的1和0的最大子序列二进制集

我在互联网上发现了以下问题,并想知道我将如何解决它:

你得到一个包含0和1的数组.找到O(n)时间和O(1)空间算法以找到具有相等数量的1和0的最大子序列.

例子:

  1. 10101010 - 满足问题的最长子序列是输入本身
  2. 1101000 - 满足该问题的最长子序列是110100

c language-agnostic algorithm

21
推荐指数
4
解决办法
5872
查看次数

找到给定数字因子的算法..最短方法?

找出给定数字的因子可能是最简单和最有效的逻辑.是否存在基于相同的算法.

实际上,我真正的问题是找出答案.对于给定数字存在的因素..

所以任何算法,请告诉我这个..

谢谢.

c algorithm

16
推荐指数
2
解决办法
4万
查看次数

面试问题......试图解决,但无法获得有效的解决方案

我被困在一个面试问题中..问题是,

*给定两个数组A和B.A的整数未排序.B与A具有相同的长度,其值在集合{-1,0,1}中

你必须返回一个数组C,在A上进行以下处理.

如果B [i]为0则C [i]必须有A [i]
如果B [i]有-1则A [i]必须在子数组C [0]中的C中 - C [i-1]即.
如果B [i]具有1则左子阵列则A [i]必须在子阵列C [i + 1]中的C中 - C [长度(A)]即右子阵列.

如果不存在这样的解决方案那么printf("没有解决方案");*

我应用了以下逻辑: -

int indMinus1 = n-1;
int indPlus1 = 0;

//while(indPlus1 < n && indMinus1 > 0)
while(indPlus1 < indMinus1)
{
    while(b[indMinus1] != -1)   {
        if(b[indMinus1] == 0)
            c[indMinus1] = a[indMinus1];
        indMinus1--;
    }
    while(b[indPlus1] != +1)    {
        if(b[indPlus1] == 0)
            c[indPlus1] = a[indPlus1];
        indPlus1++;
    }

    c[indMinus1] = a[indPlus1];
    c[indPlus1] = a[indMinus1];
    b[indMinus1] = 0;
    b[indPlus1] = …
Run Code Online (Sandbox Code Playgroud)

c algorithm data-structures

16
推荐指数
1
解决办法
1228
查看次数

坚持面试问题......数组的分区

我在互联网上发现了以下问题,并想知道我将如何解决它:

问题:没有重新排列的整数分区

输入:非负数的排列S {s 1,... ..,s n }和整数k.

输出:将分区S分成k个或更少的范围,以最小化所有k个或更少范围的总和的最大值,而无需重新排序任何数字.*

请帮忙,看起来像有趣的问题......我实际上花了很多时间,但没有看到任何解决方案..

algorithm dynamic-programming

15
推荐指数
2
解决办法
5833
查看次数

文件搜索索引的算法问题

有一个问题,我也有解决方案.但我无法理解解决方案.请帮助一些例子和淋浴一些经验.

如果文件包含大约3亿个社会安全号码(9位数字),请找到一个不在文件中的9位数字.您拥有无限的驱动器空间,但只有2MB的RAM供您使用.

回答

在第一步中,我们构建一个初始化为0的数组2 ^ 16个整数,对于文件中的每个数字,我们将其16个最高有效位索引到此数组并递增数字.

由于文件中的数字少于2 ^ 32,因此数组中必须存在(至少)一个小于2 ^ 16的数字.这告诉我们这些高位中可能的数字中至少缺少一个数字.

在第二遍中,我们只关注与该标准匹配的数字,并使用大小为2 ^ 16的位向量来识别其中一个缺失的数字.

algorithm

11
推荐指数
1
解决办法
1326
查看次数

C中的联合与结构

这个问题背后的想法是理解使用联合的更深层次的概念,并以不同的方式使用它以节省记忆.我的问题是 - 我的问题是 -

让我们说有一个结构

struct strt
{
   float f;
   char c;
   int a;
}
Run Code Online (Sandbox Code Playgroud)

并且在结合中表示相同的结构

union unin
{
   float f;
   char c;
   int a;
}
Run Code Online (Sandbox Code Playgroud)

如果我一个接一个地为结构成员分配值然后打印它们,它就会打印出来.但是如果没有发生联盟,一些覆盖工作正在进行中.

所以我需要找到一个方法,它可以存储f,c,a的值使用union,然后我可以打印相同的.(应用任何操作或任何东西..)但我正在寻找这种技术..那里有人可以指导我或给我任何想法吗?

c unions

9
推荐指数
4
解决办法
1万
查看次数