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

📄 creattree.cpp

📁 实现了对家谱管理系统的添加
💻 CPP
字号:
#include"Tree.h"

memberTree* createTree(List* &head,memberTree* &root)
{
   Stack S=InitStack();
  
   memberTree *h=new memberTree; 
   root=NULL;
   
   head=new List;
   List *p;
   List *q;
   p=head;
   head->length=0;

   ifstream infile;
   infile.open("relation.txt",ios::in);

   if(!infile)
   {
      cerr<<"不能打开文件!"<<endl;
	  abort();
   }

   int n;
   while(infile>>n)
   {
	  p->num=n;
	  q=p;
	  p->next=new List;
      p=p->next;
	  head->length++;
   }
   infile.close();
   q->next=NULL;
   delete p;
   q=head;
   
   for(int i=0;i<head->length;i++)
   {
	  memberTree *s;
      s=new memberTree;
      s->parent=NULL;
	  s->child=NULL;
	  s->brother=NULL;
	  s->data=q->num;
	
     if(root==NULL)
	 {
        root=new memberTree;
	    root->parent=NULL;
	    root->child=NULL;
	    root->brother=NULL;
	    root=s;
	 }
	 else
	 {
	    h=PreOrdermemberTree(S,root,q->num);
		// 该节点已经存于树中
		if(h==NULL || h->data!=q->num)                  // 新节点
		{
		   h=PreOrdermemberTree(S,root,p->num);
		   s->parent=new memberTree;
		   s->parent=h;
		   if(h->child==NULL)   //插入该节点作为它双亲的第一个孩子
		   {
			  h->child=new memberTree;
			  h->child=s;
		   }
		   else 
		   {
			  h=h->child;
			  while(h->brother!=NULL)
			  {
			     h=h->brother;
			  }
			  h->brother=new memberTree;
			  h->brother=s;
		   }
		}
	 }
	 p=q;
	 q=q->next;
  }
 
  return root;
}

⌨️ 快捷键说明

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