Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define ALPHA_SIZE 26
- struct vertex {
- char *v;
- struct vertex *parent, *arcs[ALPHA_SIZE];
- } *t;
- int m;
- struct vertex *InitTrie()
- {
- struct vertex *x;
- int i;
- x = (struct vertex*)malloc(sizeof(struct vertex));
- for (i = 0; i < ALPHA_SIZE; i++)
- x->arcs[i] = NULL;
- x->v = NULL;
- return x;
- }
- struct vertex *Descend(char *k)
- {
- int len = strlen(k);
- struct vertex *x, *y;
- x = t;
- m = 0;
- while (m < len) {
- y = x->arcs[k[m] – 'a'];
- if (0 == y) break;
- x = y; m++;
- }
- return x;
- }
- void Delete (char *k)
- {
- struct vertex *x;
- x = Descend(k);
- x->v = NULL;
- }
- void Lookup (char *k)
- {
- int i, len = strlen(k);
- struct vertex *x;
- x = Descend(k);
- i = m;
- if (x->v == NULL)
- printf("element does not exist\n");
- printf("%s\n", x->v);
- }
- void Insert (char *k, char *value)
- {
- int i, len = strlen(k);
- struct vertex *x, *y;
- x = Descend(k);
- x->v = value;
- }
- int main()
- {
- int i, n;
- char command[10], str[100], value[100];
- struct vertex *x;
- t = InitTrie();
- scanf("%d", &n);
- for (i = 0; i < n; i++) {
- scanf("%s", command);
- if ('i' == command[0]) { //insert
- scanf("%s%s", str, value);
- Insert(str, value);
- }
- if ('d' == command[0]) { //delete
- scanf("%s", str); Delete(str);
- }
- if ('l' == command[0]) { //lookup
- scanf("%s", str); Lookup(str);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement