资源简介

湖南大学数据结构实验代码(十六个实验,全部代码,可以参考),全部自己做过的实验,希望能给学弟学妹参考,杜绝抄袭

资源截图

代码片段和文件信息

#include
#include
#include
#include
using namespace std;
template 
class BST_Tree;          //树的声明 
template
class Node               //定义树节点   
{
  friend class BST_Tree;
  private:
     T item;
     Node*LChild*RChild;//左指针右指针 
  public:
     Node(const T&item1Node*L=NULLNode*R=NULL):item(item1)LChild(L)RChild(R){}                  
};
template
class BST_Tree
{
  private:
       Node*Root;      //树根 
       int size;            //结点数目 
       void PrePrint(Node*t)const;        //前序遍历 
  public:
       BST_Tree(){Root=NULL;size=0;}
       bool Insert(const T&value);    //插入结点
       bool Delete(const T&value);     //删除结点 
       //查找结点  返回查找次数  并存储此节点的父节点   若结点不存在,则插入此节点   
       int FindNode(const T&value); 
       void PrePrint()const        //前序遍历 
       {
         PrePrint(Root);    
       } 
};

 template
 bool BST_Tree::Insert(const T&value)    //插入结点
 {
  Node*t*ParentNode*NewNode;   //结点t访问树  寻找合适位置  结点ParentNode为t的父节点  结点NewNode为新生成的结点
  t=Root;
  while(t!=NULL)        //访问不结束  继续访问   规则  左子树的值比根结点值小,右子树值比根结点大 
  {
    ParentNode=t;         //存储父节点
    if(t->item>=value)       //则访问左子树
     t=t->LChild;
    else
     t=t->RChild; 
  } 
  NewNode=new Node(valueNULLNULL);     //生成新节点 
  if(Root==NULL)          //树空
   Root=NewNode;
  else
   if(ParentNode->item>=value)
     ParentNode->LChild=NewNode;
   else
     ParentNode->RChild=NewNode;
   size++; 
  return true;
 }

 template
 bool BST_Tree::Delete(const T&value)     //删除结点 
 {
   Node*t*ParentNode;   //结点t访问树  寻找合适位置  结点ParentNode为t的父节点  
   t=Root;
   //下面进行查找工作 
   while(t!=NULL)      //树非空继续访问 
    {
     if(value==t->item) //找到结点则结束查找 
            break;
     else
     {
     ParentNode= t;
     if(valueitem)          //往左孩子查找 
       t = t->LChild;
     else 
       t = t->RChild;             //往右孩子查找 
     }        
    }
   if(t==NULL)
     return false;          
   if(t->LChild==NULL&&t->RChild==NULL) //要删除的为叶子结点 
   {
    if(t->item==Root->item)         //删除为根结点时 
     Root=NULL;
    else
    if(ParentNode->LChild&&ParentNode->LChild->item==value)//结点为左孩子 
       ParentNode->LChild=NULL;
    else
       ParentNode->RChild=NULL;
   }
   else if(t->LChild==NULL&&t->RChild!=NULL)//要删除的为只有单亲结点 
   {
     if(t->item==Root->item)         //删除为根结点时 
       Root=Root->RChild;                                
     else
     if(ParentNode->LChild&&ParentNode->LChild->item==value)//结点为左孩子
        ParentNode->LChild=t->RChild;
     else
        ParentNode->RChild=t->RChild;  
   }
   else if(t->LChild!=NULL&&t->RChild==NULL)//要删除的为只有单亲结点
   {
     if(t->item==Root->item)         //删除为根结点时 
       Root=Root->LChild;                                
     else
     if(ParentNode->LChild&&ParentNode->LChild->item==value)//结点为左孩子
        ParentNode->LChild=t

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-06-27 17:58  实验代码\
     文件        7268  2012-04-27 09:48  实验代码\BSTTree.cpp
     文件      478714  2012-04-27 09:48  实验代码\BSTTree.exe
     目录           0  2012-06-27 17:58  实验代码\Kruskal\
     文件          82  2012-05-30 10:31  实验代码\Kruskal\input.txt
     文件        2393  2012-05-30 10:32  实验代码\Kruskal\Kruskal.cpp
     文件      520078  2012-05-30 11:18  实验代码\Kruskal\Kruskal.exe
     文件          68  2012-05-30 11:18  实验代码\Kruskal\output.txt
     文件        2566  2011-10-28 23:59  实验代码\queue.cpp
     文件        1049  2011-10-28 23:59  实验代码\queue.h
     文件        1149  2011-08-08 12:35  实验代码\SeqStack.cpp
     文件         476  2011-08-08 12:26  实验代码\SeqStack.h
     文件        6449  2012-04-19 21:58  实验代码\二叉树实现中缀表达式转化为逆波兰表达式.cpp
     文件      530110  2006-07-19 17:12  实验代码\二叉树实现中缀表达式转化为逆波兰表达式.exe
     文件        3810  2012-05-04 21:43  实验代码\优先队列与堆.cpp
     文件      595777  2012-05-04 21:48  实验代码\优先队列与堆.exe
     目录           0  2012-06-27 17:58  实验代码\单源最短路径\
     文件         144  2012-05-20 21:36  实验代码\单源最短路径\input.txt
     文件         192  2012-05-20 21:37  实验代码\单源最短路径\output.txt
     文件        2686  2012-05-20 21:34  实验代码\单源最短路径\单源最短路径.cpp
     文件      655386  2012-05-20 21:36  实验代码\单源最短路径\单源最短路径.exe
     目录           0  2012-06-27 17:58  实验代码\哈夫曼编译码器\
     文件          26  2006-06-14 09:09  实验代码\哈夫曼编译码器\input1.txt
     文件           7  2006-06-14 08:51  实验代码\哈夫曼编译码器\input2.txt
     文件          18  2012-05-20 17:40  实验代码\哈夫曼编译码器\output.txt
     文件        3539  2006-06-14 09:06  实验代码\哈夫曼编译码器\哈夫曼编译码器.cpp
     文件      501661  2012-05-20 17:40  实验代码\哈夫曼编译码器\哈夫曼编译码器.exe
     文件        6269  2012-05-16 20:38  实验代码\图遍历.cpp
     文件      524737  2012-05-20 17:31  实验代码\图遍历.exe
     文件        2541  2012-04-13 08:29  实验代码\基于队列实现的杨辉三角.cpp
     文件      592394  2012-04-13 16:25  实验代码\基于队列实现的杨辉三角.exe
............此处省略27个文件信息

评论

共有 条评论