當前位置:成語大全網 - 書法字典 - 電話號碼生成器的操作方法

電話號碼生成器的操作方法

海豚號生成器,講解操作方法,如果妳想要,可以通過百度查找。

第壹步:選擇省市。您可以選擇單個城市,選中多個城市,或者單擊全選以選擇所有城市。

第二步:選擇相應的類型。您可以同時選擇其中的壹個或兩個,也可以全部選中。

第三步:設置生成數字的數量。您可以設置不同的數字級別,並且生成的數字不會重復。

第四步:點擊並開始生成。

-分界線。

# include & ltiostream & gt

使用命名空間std

# include & ltstdlib.h & gt

模板& ltT類>。

結構綁定treenode {//鏈式二叉樹節點結構

測試數據;

BinTreeNode & ltT & gt*leftChild,* rightChild

BinTreeNode():left child(NULL),right child(NULL){ }

BinTreeNode(T x,BinTreeNode & ltT & gt*l=NULL,BinTreeNode & ltT & gt* r =空值)

:data(x),left child(l),right child(r){ }

};

模板& ltT類>。

類BinaryTree{//鏈式二叉樹類

公共:

binary tree():root(null){ }/構造函數

二叉樹(tvalue):引用值(value),根(NULL){ }//構造函數(空節點標誌值)

~ binary tree(){ if(root)destroy(root);}//析構函數

朋友團隊。操作員& gt& gt& ltT & gt(istream & ampin,BinaryTree & ltT & gt& amp樹);

虛空?preOrder(void(* visit)(BinTreeNode & lt;T & gt* & ampp))//Preorder遍歷,visit是訪問函數。

{ preOrder(root,visit);}

虛空?in order(void(* visit)(BinTreeNode & lt;T & gt* & ampp)//遍歷

{ in order(root,visit);}

void post order(void(* visit)(BinTreeNode & lt;T & gt* & ampp)//後序遍歷

{ post order(root,visit);}?

binary tree(binary tree & lt;T & gt& amps){ root = Copy(s . root);}//復制構造函數並調用Copy。

bool IsEmpty(){ return root = = NULL;}//判斷樹是否為空

BinTreeNode & ltT & gt* Parent(BinTreeNode & lt;T & gt* current){//返回父節點。

if(root = = NULL | | root = = current)返回NULL;//調用同名的保護成員函數。

else返回Parent(根,當前);

}

BinTreeNode & ltT & gt* left child(BinTreeNode & lt;T & gt* current)//返回左側子級。

{ return(當前!=NULL)?當前-& gt;left child:NULL;}

BinTreeNode & ltT & gt* right child(BinTreeNode & lt;T & gt* current)//返回正確的子級。

{ return(當前!=NULL)?當前-& gt;right child:NULL;}

int Height(){ return Height(root);}//返回樹的高度並調用同名的保護成員函數。

int Size(){ return Size(root);}//返回樹中的節點數,並調用同名的保護成員函數。

BinTreeNode & ltT & gt* getRoot()const { return root;}//生根

void createBinaryTree();

受保護:

BinTreeNode & ltT & gt*根;//二叉樹的根指針

T RefValue//數據輸入停止標誌,標記空節點。

void銷毀(BinTreeNode & ltT & gt* & amp子樹);//p196刪除樹以使其為空。

void CreateBinTree(istream & amp;在,BinTreeNode & ltT & gt* & amp子樹);//P202構建二叉樹的前言

void preOrder(BinTreeNode & lt;T & gt* & amp子樹,void(* visit)(BinTreeNode & lt;T & gt* & ampp);//p199前序遍歷,訪問的是訪問函數。

void in order(BinTreeNode & lt;T & gt* & amp子樹,void(* visit)(BinTreeNode & lt;T & gt* & ampp);//p199中間順序遍歷,訪問的是訪問函數。

void post order(BinTreeNode & lt;T & gt* & amp子樹,void(* visit)(BinTreeNode & lt;T & gt* & ampp);//p200後序遍歷,訪問的是訪問函數。

BinTreeNode & ltT & gt*復制(BinTreeNode & ltT & gt*);//p201 copy-?

BinTreeNode & ltT & gt* Parent(BinTreeNode & lt;T & gt*,BinTreeNode & ltT & gt*);

//p196返回父節點,重載函數-?

int Height(BinTreeNode & lt;T & gt*)常量;//p200返回樹的高度,重載函數-?

int Size(BinTreeNode & lt;T & gt*)常量;//p200返回樹中的節點數。重載函數-?

牡蠣之友。操作員& lt& lt& ltT & gt(牡蠣公司;out,BinaryTree & ltT & gt& amp樹);

void遍歷(BinTreeNode & ltT & gt*、ostream & amp);//p196前言遍歷輸出-?

友布爾運算符= = & ltT & gt(const BinaryTree & ltT & gt& amps,const BinaryTree & ltT & gt& ampt);//確定二叉樹是否相等

BinTreeNode & ltT & gt* createBinaryTree(T * inlist,T* postlist,int i,int j,int k,int l);

};

模板& ltT類>。

伊斯特蘭公司。操作員& gt& gt(istream & ampin,BinaryTree & ltT & gt& amp樹)

{樹。CreateBinTree(in,tree . root);返回;}//重載操作,輸入

模板& ltT類>。//後序遍歷刪除

void BinaryTree & ltT & gt* destroy(BinTreeNode & lt;T & gt* & amp子樹){

if(subTree = = NULL)返回;

銷毀(子樹-》;left child);

銷毀(子樹-》;right child);

刪除子樹;子樹= NULL

}

//CreateBinTree的實現(遞歸前序遍歷構建二叉樹,P202);

模板& ltT類>。

void BinaryTree & ltT & gt* CreateBinTree(istream & amp;在,BinTreeNode & ltT & gt* & amp子樹)

{

測試項目;

如果(!in.eof()中

{

在& gt& gt項目;

if(item!=RefValue)

{

subTree = new BinTreeNode & ltT & gt(項);

if(子樹==NULL)

{ cerr & lt& lt“存儲分配錯誤!“& lt& ltendl退出(1);}

create bintree(in,subTree-& gt;left child);

create bintree(in,subTree-& gt;right child);?

}

else子樹= NULL

}

};

//實現前序(遞歸前序遍歷,p 199);

模板& ltT類>。

void BinaryTree & ltT & gt*預訂(BinTreeNode & ltT & gt* & amp子樹,void(* visit)(BinTreeNode & lt;T & gt* & ampp)

{

if(子樹!=NULL)

{

訪問(子樹);

前序(子樹-》;leftChild,訪問);

前序(子樹-》;rightChild,訪問);

}

};

//(in order,p 199);

模板& ltT類>。

void BinaryTree & ltT & gt* in order(BinTreeNode & lt;T & gt* & amp子樹,void(* visit)(BinTreeNode & lt;T & gt* & ampp)

{

if(子樹!=NULL)

{

有序(子樹-& gt;leftChild,訪問);

訪問(子樹);

有序(子樹-& gt;rightChild,訪問);

}

};

//後序的實現(遞歸後序遍歷,p200)。

模板& ltT類>。

void BinaryTree & ltT & gt* post order(BinTreeNode & lt;T & gt* & amp子樹,void(* visit)(BinTreeNode & lt;T & gt* & ampp)

{

if(子樹!=NULL)

{

後序(子樹-& gt;leftChild,訪問);

後序(子樹-& gt;rightChild,訪問);

訪問(子樹);

}

};

//copy的實現(copy,p 201);

模板& ltT類>。

BinTreeNode & ltT & gt*BinaryTree<T & gt* Copy(BinTreeNode & lt;T & gt* origin node)

{

if(origin node = = NULL)返回NULL;

BinTreeNode & ltT & gt* temp = new BinTreeNode & ltT & gt;

溫度-& gt;data = origin node-& gt;數據;

溫度-& gt;left child = Copy(origin node-& gt;left child);

溫度-& gt;right child = Copy(origin node-& gt;right child);

返回溫度;

};

//parent的實現(返回父節點,p 196);

模板& ltT類>。

BinTreeNode & ltT & gt*雙星樹& ltT & gt* Parent(BinTreeNode & lt;T & gt*子樹,BinTreeNode & ltT & gt*當前)

{

if(subTree = = NULL)返回NULL;

if(子樹-》;leftChild = = current | |子樹-& gt;rightChild==current)

返回子樹;

BinTreeNode & ltT & gt* p;

if((p = Parent(subTree-& gt;leftChild,當前)!=NULL)返回p;

否則返回父節點(子樹-& gt;rightChild,現任);

};

//執行高度(返回樹高,p200);

模板& ltT類>。

int BinaryTree & ltT & gt*高度(BinTreeNode & ltT & gt*子樹)常量

{

if(subTree = = NULL)返回0;

其他

{

int i=Height(子樹-》;left child);

int j=Height(子樹-》;right child);

return(I & lt;j)?j+1:I+1;

}

};

//Size(返回樹中的節點數,p200)的實現;

模板& ltT類>。

int BinaryTree & ltT & gt*大小(BinTreeNode<。T & gt*子樹)常量

{

if(subTree = = NULL)返回0;

否則返回1+大小(子樹-》;left child)+Size(子樹-& gt;right child);

};

//輸出樹,重載

模板& ltT類>。

牡蠣和牡蠣。操作員& lt& lt(牡蠣公司;out,BinaryTree & ltT & gt& amp樹){

out & lt& lt”二叉樹的有序遍歷\ n”;

樹。遍歷(Tree.root,out);

out & lt& ltendl

返回出去;

}

//實現//遍歷(前序遍歷輸出,p 196);

模板& ltT類>。

void BinaryTree & ltT & gt*遍歷(BinTreeNode & ltT & gt*subTree、ostream & ampout)

{

if(子樹!=NULL)

{

out & lt& lt子樹-& gt;數據& lt& lt' ';

遍歷(子樹-》;leftChild,out);

遍歷(子樹-》;rightChild,out);

}

};

//確定二叉樹是否相等

模板& ltT類>。

bool運算符= =(const binary tree & lt;T & gt& amps,const BinaryTree & ltT & gt& ampt)

{

return(equal(s根,t根))?真:假;

};

//判斷節點是否相等

模板& ltT類>。

bool equal(BinTreeNode & lt;T & gt*a,BinTreeNode & ltT & gt*b)

{

if(a = = NULL & amp;& ampb==NULL)返回true

如果(a!= NULL & amp& ampb!= NULL & amp& ampa-& gt;data = = b-& gt;數據

& amp& amp相等(a-》;leftChild,b-& gt;leftChild)

& amp& amp相等(a-》;rightChild,b-& gt;rightChild))

返回true

否則返回false

};

模板& ltT類>。

//主調程序:利用中序和後序構造二叉樹。

void BinaryTree & ltT & gt* createBinaryTree()

{

int n;

cout & lt& lt“輸入二叉樹中的節點數n =“;

CIN & gt;& gtn;

T * inlist = new T【n+1】;

cout & lt& lt”輸入二叉樹的中間序列:“;

CIN & gt;& gtinlist

T * post list = new T【n+1】;

cout & lt& lt”輸入二叉樹的後序序列:“;

CIN & gt;& gt後置列表;

root = createBinaryTree(inlist,postlist,int i,int j,int k,int l);

};

模板& ltT類>。

BinTreeNode & ltT & gt* createBinaryTree(T * inlist,T* postlist,int i,int j,int k,int l)

{

int n;

BintreeNode * p;

p =(BinTreeNode *)malloc(大小為(BinTreeNode));

p-》;data = *(postlist+1);//從後續遍歷序列中讀取節點信息

n = 1;

for(;*(inlist+n)!= *(postlist+1);n++;)//確定節點在中間序列遍歷序列中的位置

if(n = = I)p-》;leftChild = NULL

其他

p-》;left child = * createBinaryTree(inlist,postlist,I,n-1,k,k+n-I-1);//遞歸調用左邊的子樹

如果(n==j)

p-》;rightChild = NULL

其他

p-》;right child = * createBinaryTree(inlist,postlist,n+1,j,k+n-i,l-1);//遞歸調用右邊的子樹

return p;

}

。cpp如下所示:

# include & ltiostream & gt

使用命名空間std

#包含“aaaa.h”

模板& ltT類>。//輸出二叉樹節點的數據

無效訪問(BinTreeNode & ltT & gt* & ampp){ cout & lt;& ltp-》;數據;}

void main()

{

雙星樹& ltchar & gtBT;

Bt . createbinarytree();

cout & lt& lt”前言遍歷輸出二叉樹:\ n”;

BT.preOrder(訪問);

cout & lt& ltendl

}