[Data structures]Digital search tree - Double link tree
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
typedef struct _DLTree{
char symbol; // key
struct _DLTree *next;
int kind; // 0-leaf; 1-branch
union{
char *infoptr; //Pointer to the data
struct _DLTree *first;
};
}DLTree;
void *SearchDLTree(DLTree *T, char *keys, DLTree **f, int *idx)
{
int i = 0;
DLTree *p = T->first;
int n = strlen(keys);
*f = T;
*idx = i;
while(p && i< n ){
while(p && p->symbol != keys[i]){
p = p->next;
}
if(p && i<n-1 ){
*f = p;
*idx = i+1;
p = p->first;
}
i++;
}
if(!p){
return NULL;
}else{
return p->infoptr;
}
}
void InsertDLTree(DLTree *T, char *keys)
{
DLTree *F;
DLTree *p;
int ret = 0;
int i;
int n = strlen(keys);
while( !SearchDLTree(T, keys, &F, &i) ){
p = (DLTree *)malloc(sizeof(DLTree));
p->symbol = keys[i];
p->next = NULL;
if(i==n-1){
p->kind = 0;
p->infoptr = keys;
}else{
p->kind = 1;
p->first = NULL;
}
if(!F->first){
F->first = p;
}else{
F = F->first;
while(F->next){
F = F->next;
}
F->next = p;
}
}
}
void main()
{
char seq1[] = "aboutge$";
char seq2[] = "hello$";
char seq3[] = "world$";
char seq4[] = "again$";
char seq5[] = "help$";
int i;
DLTree *F;
DLTree T;
T.next = NULL;
T.kind = 1;
T.symbol = 0;
T.first = NULL;
printf("log.anycle.com\n\n");
printf("Original data:\n");
printf("%s", seq1);
printf("%s", seq2);
printf("%s", seq3);
printf("%s", seq4);
printf("%s", seq5);
printf("\n");
printf("Insert double links tree:\n");
InsertDLTree(&T, seq1);
InsertDLTree(&T, seq2);
InsertDLTree(&T, seq3);
InsertDLTree(&T, seq4);
InsertDLTree(&T, seq5);
printf("Print the tree:\n");
printf("%s", (char *)SearchDLTree(&T, seq2, &F, &i) );
printf("\n");
}
日历
最新微语
- 有的时候,会站在分叉路口,不知道向左还是右
2023-12-26 15:34
- 繁花乱开,鸟雀逐风。心自宁静,纷扰不闻。
2023-03-14 09:56
- 对于不可控的事,我们保持乐观,对于可控的事情,我们保持谨慎。
2023-02-09 11:03
- 小时候,
暑假意味着无忧无虑地玩很长一段时间,
节假意味着好吃好喝还有很多长期不见的小朋友来玩...
长大后,
这是女儿第一个暑假,
一个半月...
2022-07-11 08:54
- Watching the autumn leaves falling as you grow older together
2018-10-25 09:45
分类
最新评论
- Goonog
i get it now :) - 萧
@Fluzak:The web host... - Fluzak
Nice blog here! Also... - Albertarive
In my opinion you co... - ChesterHep
What does it plan? - ChesterHep
No, opposite. - mojoheadz
Everything is OK!... - Josephmaigh
I just want to say t... - ChesterHep
What good topic - AnthonyBub
Certainly, never it ...
发表评论: