Tag: 数据结构

有关堆栈如何在C中工作的说明

我只是想在将数据推送到堆栈时对链接过程进行简单的解释。 我知道如何使用我书中的代码,但是当我将堆栈头链接从一个链接移动到另一个时,我不确定我是否理解该过程如何工作。 对于像这样的堆栈: typedef struct node { void dataptr; struct node* link; }STRUCT_NODE; typedef struct { int count; STACK_NODE* top; }STACK; 如何更改链接以指向堆栈上推送的新数据。 我也不知道

C结构(C ++ POD)和谷歌protobufs之间的转换?

我的代码目前传递了很多(有时是嵌套的)C(或C ++ Plain Old Data)结构和数组。 我想将这些转换为谷歌protobufs。 我可以手动编写在这两种格式之间进行转换的代码,但是自动生成此类代码的错误会更少。 做这个的最好方式是什么? (对于有足够内省的语言来迭代成员变量的名称,这很容易,但这是我们所讨论的C ++代码) 我正在考虑的一件事是编写解析C结构的python代码,然后吐出一个.proto文件,以及为所有类型从成员复制到成员(在任一方向上)的C代码,但也许有一个更好的方式……或者可能有另一个已经可以生成的IDL: .h文件包含所有嵌套类型 .proto文件包含等价物 .c文件,其函数可复制.proto文件生成的C ++结构与.h文件中定义的结构之间的任一方向

计算(金钱)从167.37美元变化的不同方式?

这是一个面试问题: 给定金额,比如167.37美元,找到使用货币中可用面额生成此金额变化的所有可能方法? 任何想到空间和时间有效的算法和支持代码的人,请分享。 这是我写的(工作)代码。 我试图找到这个的运行时间,任何帮助表示赞赏 import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.Map; public class change_generation { /** * @param args */ public static void generatechange(float amount,LinkedList denominations,HashMap useddenominations) { if(amount<0) return; if(amount==0) { Iterator it = useddenominations.keySet().iterator(); while(it.hasNext()) { Float val = it.next(); System.out.println(val +” :: “+useddenominations.get(val)); } System.out.println(“**************************************”); return; } for(Float denom : […]

不同类型的链接列表!

常用的链接列表有哪些不同类型? 我知道并使用了以下内容: 单链表 双重链表 通函清单 您使用过或已知的其他类型的列表是什么?

如何处理不适合任何语言数据结构的大整数

我正在尝试解决编程竞赛的初步问题以及我必须计算的两个问题,并打印一些非常大的整数(如100!,2 ^ 100)。 我还需要一种快速的方法来计算这个大整数的幂。 你可以为我建议一些算法或数据结构吗?(顺便说一下,我读过C接口和实现的’任意精度算术’部分,但它对pow()没有帮助) 编辑:我认为通过平方法和位移的取幂对功率起作用,但我还需要一种快速的方法来计算这个因子的阶乘。 谢谢。 EDIT2:对于那些感兴趣的人; 找到包含长度为N的所有位串的最短位串长度(对不起我的英文,我会给出一个例子)。 N <= 10000 例如,包括长度为2(00,01,10,11)的所有位串的最短位串长度是5(11001)。 我对这个问题的解决方案是2 ^ n + n – 1.(所以我应该计算2的幂,我想我会使用位移) 其他问题是,给定2个长度,找到你可以通过多少种方式达到长度N.例如,输入是10,2,3。那么你应该用2和3达到10(例如,2 + 3) 2 + 2 + 2 + 2,2 + 2 + 3 + 3,3 + 2 + 2 + 3,3 + 3 + 2 + 2 ……)。 1 <= N <2 ^ 63。 […]

如何在C中的Struct变量中访问指针成员?

我不是C的新手,但我发现了一个我必须处理的问题。 如何访问作为指向另一个结构的指针的结构的成员? 恩。 typdef struct { int points; } tribute; typedef struct { int year; tribute *victor; } game; int main(){ tribute myVictor; myVictor.points = 10; game myGame; myGame.year = 1994; // Runs fine myGame.victor = myVictor; // I want to point the victor member of the game struct to //myVictor object… But it gives […]

如何使用单链表实现队列,使其ENQUEUE和DEQUEUE占用O(1)?

这是CLRS 3rd的练习: 10.2-3通过单链表L实现队列。操作ENQUEUE和DEQUEUE仍然需要O(1)时间。 使用单链表实现队列并不困难。 我的问题是关于时间的复杂性。 如何实现带O(1)的ENQUEUE和DEQUEQUE? 我在谷歌上发现的东西就像使用指针跟踪头部和尾部。 现在问题变成如何使用O(1)时间跟踪单链表上的头尾? 恕我直言,需要O(n)跟踪尾部。 我对吗?

C:数据结构对齐

我正在使用结构,并对它们有几个问题。 据我所知,结构变量将按顺序放在内存中。 块长度(字)取决于机器架构(32位 – 4字节,64位 – 8字节)。 可以说我们有2个数据结构: struct ST1 { char c1; short s; char c2; double d; int i; }; 在内存中它将是: 32 bit – 20 bytes 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 […]

在C中声明函数内的结构

我有一个只有一个函数必须访问的结构。 该函数将诸如“k,K,kb,KB,m,M,mb,MB,…”之类的标记转换为实际单位。 这样做的目的是简化配置文件。 所以,假设我们有: static uint32_t real_unit(const char *str) { struct u2type { char key[3]; uint32_t val; } const u2types[] = { { “k”, KB_UNIT }, { “K”, KB_UNIT }, { “kb”, KB_UNIT }, { “KB”, KB_UNIT }, { “m”, MB_UNIT }, { “M”, MB_UNIT }, { “mb”, MB_UNIT }, { “MB”, MB_UNIT }, { […]

自动校正,自动完成function

Hii, 当我们在Ms-word,google等中输入单词时,我们会看到建议……他们是如何做到的? 我想知道如何执行自动纠正,自动完成,拼写检查等技术。 HOw是实际存储的词……遵循什么算法…… ??? 任何建议可行方式的链接都是受欢迎的,