Untitled
unknown
plain_text
2 years ago
2.0 kB
22
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct TrieNode {
char key[50];
int count;
struct TrieNode* children[256];
};
struct TrieNode* createNode()
{
struct TrieNode* newNode = (struct TrieNode*)malloc(sizeof(struct TrieNode));
newNode->count = 0;
memset(newNode->key, 0, sizeof(newNode->key));
for (int i = 0; i < 256; i++)
{
newNode->children[i] = NULL;
}
return newNode;
}
void insert(struct TrieNode* head, char* str) {
struct TrieNode* current = head;
int length = strlen(str);
for (int i = 0; i < length; i++) {
unsigned char index = (unsigned char)str[i];
if (current->children[index] == NULL) {
current->children[index] = createNode();
}
current = current->children[index];
}
strncpy(current->key, str, sizeof(current->key) - 1);
current->count++;
}
void preorAder(struct TrieNode* current, int* maxCount, char* maxKey) {
if (current == NULL)
{
return;
}
if (current->count > *maxCount)
{
*maxCount = current->count;
strncpy(maxKey, current->key, sizeof(current->key) - 1);
}
for (int i = 0; i < 256; i++)
{
preorder(current->children[i], maxCount, maxKey);
}
}
int main() {
char* words[] = { "code", "coder", "coding", "codable", "codec", "codecs", "coded","codeless", "codec", "codecs", "codependence", "codex", "codify","codependents", "codes", "code" "coder", "codesign", "codec","codeveloper", "codrive", "codec", "codecs", "codiscovered"};
struct TrieNode* head = createNode();
for (int i = 0; i < sizeof(words) / sizeof(words[0]); i++)
{
insert(head, words[i]);
}
int maxCount = 0;
char maxKey[50] = {0};
preorder(head, &maxCount, maxKey);
printf("Word : %s\n", maxKey);
printf("Count: %d\n", maxCount);
free(head);
return 0;
}
Editor is loading...