⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 算法 8.9.txt

📁 数据结构各种算法原代码及图形示例
💻 TXT
字号:
算法 8.9
bool Insert_DLTree( DLTree &root, KeysType K, int &n )
{
    // 指针root所指双链树中已含n个关键字,若不存在和K相同的关键字,
    // 则将关键字K插入到双链树中相应位置,n增1且返回TRUE;
    // 否则不再插入且返回FALSE
        p = root->first;  f = root;  j = 0;
        while ( p && j < K.num ) {           // 在键树中进行查找
          pre = NULL; 
        while( p && p->symbol < K.ch[j] )  // 查找和K.ch[j]相同的结点
            { pre = p;  p = p->next; }
          if ( p && p->symbol == K.ch[j] )  
            { f = p;  p = p->first;  j++; }   // 找到后进入到键树的下一层
          else {  // 没有找到和K.ch[j]相同的结点,插入K.ch[j]
             s = new DLNode;  s->kind = BRANCH;  s->symbol = K.ch[j++];
             if (pre)  pre->next = s;
             else  f->first = s;
             s->next = p;  p = s; 
             break;
          }//else
        }//while
        if ( p && j == K.num )
          if ( p->first->kind == LEAF )  return FALSE;  // 键树中已存在K
          else {  // 键树中已存在相同前缀的单词,插入由剩余字符构成的单支树
            while ( j <= K.num ) {
              s = new DLNode;  
              s->next = p->first;  p->first = s;  p = s;
              if ( j < K.num) 
                { s->kind = BRANCH;  s->symbol = K.ch[j++]; s->first = NULL; }
              else 
                { s->kind = LEAF;  s->symbol = '$';  n++;  s->idx = n;  }
            }//while
            return TRUE;
          }//else
}//Insert_DLTree

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -