Tag: 数据结构

从c中的前缀表达式构建解析树

我正在尝试创建这样的二叉树: link 输入将由用户输入为前缀并作为字符串读取,然后放入二叉树中。 这是我到目前为止: struct node{ char val; struct node *left; struct node *right; }; typedef struct node root; typedef root *tree; 主要: void main(){ int i; tree tr; char* s; s=input(); //input function tr=create_empty_tree(); for(i=0;s[i]!=’\0′;i++){ tr=add_root(s[i],ab); } convert_infix(tr); } 这是我几天来一直在努力的部分; 我似乎无法正确构建树。 这是我到目前为止: tree add_root(char val, tree tr){ if ( tr == NULL ){ tr= […]

使用Google的C KD树库

Google有一个用C: 这里编写的KD树库 据我所知,您可以使用其中一个函数将注释插入树中,然后在树中查询最近邻居。 它返回一个指向新数组的指针(据我所知)。 这是我的目标: 我有一个3D数组,我希望找到一种方法来返回给定点的最近邻居的索引。 我想说:这里有一点:(12,23,14),现在告诉我最近点的索引:“它是数组中的第5项”。 但是,我不知道该怎么做。 我的问题,有没有人: A)知道c的良好记录的k维最近邻搜索库,或者: B)知道如何让Google的代码返回数组中最近邻居的位置。

适用于C中具有一般和特定属性的项列表的数据结构

我正在制作多人文字游戏,并为游戏中的每个玩家分配了一个库存。 库存是一个简单的线性链接列表,其中包含项目的ID和游戏中项目的状态。 例如,player1可能有一辆含有50%燃料的红色汽车,它将在列表中表示为(5,50),其中5是游戏中红色汽车的ID,50是该特定燃料的燃料量汽车。 但这意味着游戏中每个项目的信息都应保存在某些数据结构中。 我想过使用类似的东西 enum itemtype {car, gun, bullet, etc}; struct itemlist { itemtype type; char* name; int volume, weight; } itemlist[]; 并且红色汽车的所有信息(car, “Red car”, 15m^3, 2000kg)将被存储在项目itemlist[5] ,因为红色汽车的ID是5。 但是这个游戏中有不同类型的项目,因此每个项目都有自己的属性。 汽车将具有(max_speed, acceleration)和子弹(mass, velocity, kinetic_energy) 。 并且代码的某些部分需要访问这些特定属性才能在游戏中执行操作。 所以这意味着 从库存中获取ID 检查数组以查找此类项目的特定属性 用检索到的属性做事 但我不知道该怎么做,因为每个项目都有不同类别的特定属性。 向结构添加数组无济于事,因为属性可以是任何东西,如字符串或数字。 添加嵌套结构可能没问题,但可能有些东西试图使用item[5].properties.max_speed ,我不确定这是否安全,因为有人可能会试图从一个没有’的项目中获取属性max_speed有它。 那么,为这样的项目列表存储一般和特定属性的最佳方法是什么?

C和字符串处理

完全代码http://pastebin.com/6bdVTyPt我的树代码完全正常工作,直到我发现我需要validation其不是文本的ID所以它必须是字符串插入函数字符串比较90和129返回8试图使用(atoi)和比较整数不起作用任何帮助赞赏 谢谢你inheritance使用atoi而不是strcomp的插入functionhttp://pastebin.com/yeuktyAF仍然没有工作插入function struct node * insert2(struct node *root, char x[],char id[]) { if(!root) { root=(struct node*)malloc(sizeof(struct node)); free( root->data ); free( root->id );// free previously allocated memory, if any root->data = strdup( x ); // malloc and copy root->id=strdup(id); root->left = NULL; root->right = NULL; // printf(“1\n”); return(root); } printf(“string comp %d of %s of […]

将特殊purpoes-strings转换为Integers的方法

我需要一个Key-Value对的内存数据结构(400 MB的数据)。 我对键有以下约束: 键和值都是分别为256和1024的文本字符串。 任何键通常看起来像k1k2k3k4k5,每个k(i)本身是4-8字节的字符串。 一些k(i)可能存在或可能不存在于键中。 每个k(i)有6-8种可能性。 然而,k3和k4有256000种可能性。 可以使用prefix_key迭代DS。 DS应针对此操作进行优化。 该操作分配迭代器,即它迭代整个DS并返回与prefix_key匹配的键值列表(例如,“k1k2k3。*”,k(i)如上定义)。 每次迭代都迭代这个迭代器(列表)。 释放迭代器可以释放列表。 使用DS获取字符串键会使密钥比较过于昂贵。 因此排除了DS(Hash,B + Tree)的某些选项。 我的问题是我们如何创造性地将String键转换为整数键?解决方案需要具有以下属性: 对于关键模式“k1k2k3。*”,它应该对整数的上限和下限进行生成,以便基于这些边界,在DS中只查找少数条目。 我在解决这个问题的背景下问这个问题

不知道类型打印数据?

我需要打印一些结构用于调试目的。由于代码库很大,我很难找到我需要查看的确切成员。有什么方法可以打印出整个结构吗? 或至少知道它是什么类型的结构,以便我可以回去看看它的定义?

从链表中排序元素

void sortlist() { struct node *a; struct node *temp=head; struct node *temp1=head->next; while(temp!=NULL) { while(temp1->next!=NULL) { if(temp->data > temp1->data) { a->data=temp->data; temp->data=temp1->data; temp1->data=a->data; } else { temp1=temp1->next; } } temp=temp->next; } } //我是数据结构的新手。我在尝试对链接列表的元素进行排序时遇到了一些问题。列表没有得到排序。非常感谢任何帮助。

C中的简单链接列表:内存访问错误

#include “List.h” typedef int element; typedef struct _ListNode //form of node { element data; struct ListNode *link; } ListNode; ListNode *header = NULL; //make header in global variable int num_node = 0; //counting number of nodes int AppendNode(const ListNode item); void DisplayItem(void); int InsertNode(const int pos, const ListNode item); int AppendNode(const ListNode item) { ListNode […]

C程序将一个二叉搜索树复制到另一个

所以,在这里我提出了二进制搜索树prgram,我在其中创建了2个二进制树tmp和tmp2,其中我试图将整个tmp2复制到tmp,该节点被用作用户的输入。 但我得到一些分段错误,我也不确定逻辑是否正确。 这是整个程序,请知道在t_cpy()中哪里出错了或者请为我修好.. #include #include struct node { int data; struct node *rlink; struct node *llink; }*tmp=NULL,*tmp2=NULL,*tmp3=NULL; typedef struct node NODE; NODE *create(); void inorder(NODE *); void insert(NODE *); void t_cpy(NODE *,NODE *); int main() { int n,m; do { printf(“\n1.create tree 1\n2.Insert element to tree1\n3.create tree 2\n4.Insert element to tree2\n5.Inorder tree1\n6.Inorder tree2\n7.Copy tree2 to […]

如何从链表中删除重复的奇数?

要求/约束​​: 仅删除重复项 保留一份副本 列表最初未排序 如何在C中实现? (非常感谢算法和/或代码!)