Tag: 数据结构

简单链接列表 – 无法访问节点

我正在尝试构建一个简单的链接列表但是我收到编译错误告诉我我正在尝试访问的链接列表节点不包含我期望它的字段。 这些是我的链接列表方法: typedef struct TinCan { int label; } TinCan; typedef struct LinkedListNode { TinCan *data; struct LinkedListNode *next; } LinkedListNode; typedef struct LinkedList { LinkedListNode *head; } LinkedList; LinkedList* createList() /*creates empty linked list*/ { LinkedList* myList; myList = (LinkedList*)malloc(sizeof(LinkedList)); myList->head = NULL; } 我malloc一个结构并将其发送到列表,如下所示: LinkedList* canQueue=createList(); TinCan* testCan = (TinCan*) malloc(sizeof(TinCan)); testProc->pid=69; insertLast(canQueue, […]

从堆栈创建二叉树?

我的任务是创建一个程序,将((X+3)*(X+4))变成二叉树,以及其他一些function。 到目前为止,我已经接受了输入,并将其解析为两个堆栈,一个包含操作数,另一个包含运算符。 我现在简单地定义了堆栈(所以它们只有一个nextnode和char value 。但是,我似乎在将堆栈中的值添加到树中时遇到了问题(因此定义树时可能存在问题)。 我的堆栈定义如下: typedef struct node { char value; struct node * nextnode; } node; 我的树被定义为: typedef struct tree { node * thisNode; struct tree *right, *left; } tree; 我不确定节点*部分,也许它应该是不同的东西。 我一直在考虑初学者2 + 3的简单案例。 在这种情况下,树的根应为+,左边为2,右边为3。 + /\ 2 3 如何在堆栈中添加堆栈中的内容? 我试过用 root->thisNode = operatorTop; 其中operatorTop是运算符堆栈的顶部(定义为node * operatorTop ),但即使是那条简单的行也似乎是段错误。

从文件中的数据结构写入字符串

该程序应该由用户接收一些输入字符串,将它们保存在数据结构中,然后将所有内容打印到文件中。 对于exaple,如果我输入“test one”,它应该保存在inputs.one上,然后我应该在clients.txt上看到“test one”。 如果我输入“test one”,“test two”和“test three”,我应该看到在clients.txt上打印的那三个输入。 问题是,程序现在只执行一次scanf而不是三次,这就是为什么我添加了三个scanf而不是只进行一次scanf。 基本上,如果我输入“测试一个”它只会保存并打印测试一个,而不需要另外两个输入,我不知道为什么。 额外:我添加了这些fgets作为另一种尝试正确保存输入的方法,问题是fgets会将文件上的数据打印为 “测试一次测试两次测试三次” 而不是一条线上的所有东西,所以fgets也不会工作。 #include #include #include struct inputs { char one[30]; char two[30]; char three[30]; }; int main(void) { struct inputs inputs = {“”, “”, “”}; FILE *cfPtr; // cfPtr = clients.txt file pointer // fopen opens file. Exit program if unable to create file […]

如何更新散列函数中的表大小

我正在学习如何实现哈希表但我在这里有点困惑因为在下面的书中代码是可用的并且我对代码的理解得很好,但是在书中没有HASH函数的定义,我知道我们必须通过拥有,但根据下面给出的代码给出内部书HASH是两个参数,无论我在HashInsert使用HASH index=HASH(data,t->size)如果我们假设返回类型的HASH , HashInsert它采用两个参数index=HASH(data,t->size)现在为int,例如我们可以将HASH定义为 int HASH(int data,int tsize){ return(data%7); } 但是根据我的程序,如何在HASH函数内更新t->size (表大小)或者我应该如何使用它请帮助我正确实现上面的HASH函数 #define Load_factor 20 #include #include struct Listnode{ int key; int data; struct Listnode* next; }; struct HashTableNode{ int bcount; /// Number of elements in block struct Listnode* next; }; struct HashTable{ int tsize; /// Table size int count; struct HashTableNode** Table; }; struct […]

c – 错误:“不允许不完整的类型”,IAR编译器

请指教,出了什么问题? 在.h struct { uint8_t time; uint8_t type; uint8_t phase; uint8_t status; } Raw_data_struct; typedef struct Raw_data_struct Getst_struct; void Getst_resp(Getst_struct Data); 在.c void Getst_resp(Getst_struct Data) //Here Error: incomplete type is not allowed { };

我如何在c中使用enqueue函数对列表进行排序?

我的列表 : list= C,3 –>C,5,—> A,7 –> A,5 –> G,2–> C,11 –>A,4 我的输出: output= C,5 C,11 G,2 A,7 A,4 A,5 C,3 但是有一些错误。 我在答案中编写代码,然后编写charcmp函数并用strcmp替换为charcmp。 它有时会发挥作用。 但通常第一个元素是在错误的地方。我的排序​​代码喜欢答案的代码

在非常长的字符串中查找频率的最佳方法

我必须找到一种非常优化的方法来查找包含单词的非常长的文件中的字符频率(使用C / C ++时,忽略大小写,应该计算小写和大写)。 我已经知道一个是这个(这里我正在读取终端用户的输入,但在我的情况下我将从文件中读取,所以请不要去get()函数,请关注我的主要目标是获得一个比这更优化的方式(如果可能的话)): int main() { char string[100]; int c = 0, count[26] = {0}; printf(“Enter a string\n”); gets(string); while (string[c] != ‘\0’) { /** Considering characters from ‘a’ to ‘z’ only and ignoring others */ if (string[c] >= ‘a’ && string[c] <= 'z') count[string[c]-'a']++; c++; } for (c = 0; c < […]

使用qsort排序字符串以检查它们是否是Anagram

static int myCompare (const void * a, const void * b) { return strcmp (*(const char **) a, *(const char **) b); } void sort1(const char *str1[],int n1) { qsort (str1,n1,sizeof (const char *), myCompare); } void sort2(const char *str2[], int n2) { qsort( str2, n2, sizeof (const char *),myCompare); } int main () { […]

将模板生成的类分配给具有相同布局的C结构

如果我理解正确,那么对象’A’定义如下: typedef struct { int n; float *p; } myStruct; myStruct A; 是一个聚合,其内存布局与对象’B’完全相同,定义如下: template class myTemplateClass { public: int n; T* p; }; myTemplateClass B; 那么,是否有更优雅的分配方式 A = B; 而不是写 A = *(reinterpret_cast(&B)); 每次? 我的理由是我必须调用一个库函数,该函数使用“myStruct”forms的参数公开一个接口,从代码中以myTemplateClass的forms保存我的数据是非常自然的。

代码目录结构 – 库设计

下面是代码结构,其中stack , Queue , tree文件夹代码依赖于list文件夹代码, ../Computing >ls HashTable list Queue recursion stack tree list tree/rootedTree文件夹中复制的list文件夹,不像推荐的方法包含依赖的头文件, 这里提到的, ../Computing/tree/rootedTree >ls lcrsImpl.c list main.c multiWalkImpl.c tree.h 这是rootedTree文件夹的不完整代码。 为避免代码重复List文件夹,如何维护代码结构?