親愛滴的大佬,鄙人遇到麻煩了

,想了一萬年,找了一萬年問題,愣是沒找出,本題要求利用亂數生成器創建一個陣列,然后把陣列倒入二叉樹中,然后我就卡了
,卡在犄角旮旯一萬年,找了很多代碼也看不懂,無法1對比自身原因,只能來問你們了,無敵的大佬啊,下面先放本人的編譯器內容[size=24px][size=13px]
H:\資料結構與演算法課程實習\基礎部分框架--3\P5.CPP In function 'BiTNode* init1(BiTNode*)':[/size][/size]
157 28 H:\資料結構與演算法課程實習\基礎部分框架--3\P5.CPP [Error] invalid conversion from 'int' to 'int*' [-fpermissive]
91 5 H:\資料結構與演算法課程實習\基礎部分框架--3\P5.CPP [Note] initializing argument 1 of 'int init0(int*)'
/*
源檔案名:P5.cpp
功能:二叉樹操作
1、實作二叉樹的創建;
2、用遞回方法分別先序、中序、后序遍歷以Tree為根指標的二叉樹;
3、撰寫遞回演算法,計算二叉樹中葉子結點的數目;
4、撰寫遞回演算法,計算二叉樹的深度;
5、撰寫遞回演算法,將二叉樹中所有結點的左、右子樹相互交換;
6、使用陣列elem中的亂數序列(以0表示結束,不包括0),生成以Tree為根指標的二叉排序樹;
7、在以Tree為根指標的二叉排序樹中查找結點;
8、從以Tree為根指標的二叉排序樹中洗掉結點(適用各種位置的結點);
9、用非遞回演算法,先序遍歷以Tree為根指標的二叉樹;
提示:用陣列 BiTNode *stack[max] 構成堆疊,利用這個堆疊實作功能。
10、對以Tree為根指標的二叉樹,從根結點開始,逐層從左到右輸出各結點的資料。
*/
//#include <iostream.h>
//#include <iomanip.h>
#include <conio.h>
#include <stdio.h>
#include <process.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
struct BiTNode //二叉樹結點型別,定義二叉樹左右指標結構體
{
int data; //資料
int tem1,tem2; //輔助資料(實習題不用)
BiTNode *left; //左子樹指標
BiTNode *right; //右子樹指標
};
BiTNode MYTREE;
BiTNode *Tree; //本程式操作的二叉樹 根指標!!!
const int max=100;
int elem[max]; //存放原始資料
int init0(int list[]);
void showBinTree(BiTNode *Tree);
BiTNode *init1(BiTNode *Tree); //該指標函式從鍵盤輸入個數和亂數種子,以Tree為根指標,生成指定結點個數的二叉樹,供其他程式使用
void wait(){
printf("\n請按任意鍵繼續\n") ;
getch();
}
int main()
{
int list[max]={};//我看別人是不需要這一個陣列定義和初始化的,只用到elem陣列的初始化
//可能是因為我在選擇程式中有用到這個引數吧
Tree = &MYTREE;
MYTREE.left=NULL;
MYTREE.right=NULL;
char choice;
while (1)
{
system("cls");
printf( "\n\n\n\n");
printf( "\t\t 二叉樹操作 \n");
printf( "\t\t======================================");
printf( "\n\n");
printf( "\t\t 1:初始化 \n");
printf( "\t\t 2:顯示 \n");
printf( "\t\t 0:退出 \n");
printf( "\n");
printf( "\t\t請選擇:" );
choice = getch();
system("cls");
switch(choice)
{
case '1':
init0(list);
break;
case '2':
showBinTree(Tree);
break;
case '0':
exit(0);
}
}
}
void BENULL(BiTNode *T) //用來把兒子指向變成null,這個函式在前面就沒有宣告
{
T->left=NULL;
T->right=NULL;
}
int init0(int list[]){//先序創建二叉樹,函式從鍵盤輸入個數和亂數種子,在陣列elem中生成指定個數的資料,
//供其他程式使用!!!,0表示資料結束
int n;
// BiTNode *p,*q;
while (1)
{
printf("輸入元素個數(0- 100 ):" );
scanf("%d",&n);
if (n >= 0 && n <= 100)
break;
printf("\n");
}
int i,value;
while (1)
{
printf( "輸入亂數種子(0-32767):" );
scanf("%d",&i);
if (i >= 0 && i <= 32767)
break;
printf("\n");
}
/* //從線性表中洗掉并釋放原有的結點,使其成為空表,不是鏈表不需要這幾步操作
p=DLList;
while (p->next!=NULL)
{
q=p->next;
p->next=q->next;
free(q);
}*/
srand(i); //指定亂數種子,相同的種子將產生相同的資料序列
rand();
for (i = 0; i < n; i++)
{
list[i] = rand() % 999 +1;
return list[i];
}
/*//向線性表插入length個新結點,不是鏈表不需要這幾步操作
//但貌似和此次二叉樹的步驟有相似之處
for (int j=1;j<=length;j++)
{
p=new Node;
p->next=DLList->next;
DLList->next=p;
p->data=https://bbs.csdn.net/topics/rand() % 10000;
}*/
/*else{//這是我從網上找來的生成二叉樹的步驟
T=new BiTNode;
T->data=https://bbs.csdn.net/topics/ch;
CreateBiTree(T->left);
CreateBiTree(T->right);
} */
}
/* T=new BiTNode;
T->data=https://bbs.csdn.net/topics/list[i];
init1(T->left);
init1(T->right);*/
BiTNode *init1(BiTNode *Tree){
int value;
BiTNode *T=new BiTNode;
T->data=https://bbs.csdn.net/topics/init0(value);
init1(T->left);
init1(T->right);
}
void Preorder(BiTNode *T)//先序輸出
{
if(T)
{
if(T->data=https://bbs.csdn.net/topics/=NULL);
else{printf("%d ",T->data);} /*訪問結點*/
Preorder(T->left);
Preorder(T->right);
}
}
void Postorder(BiTNode *T)//中序輸出
{
if(T)
{
Postorder(T->left);
Postorder(T->right);
if(T->data=https://bbs.csdn.net/topics/=NULL);
else{printf("%d ",T->data);} /*訪問結點*/
}
}
void Inorder(BiTNode *T)//后序輸出
{
if(T)
{
Inorder(T->left);
if(T->data=https://bbs.csdn.net/topics/=NULL);
else{printf("%d ",T->data);} /*訪問結點*/
Inorder(T->right);
}
}
void show_in_order(BiTNode *T)
{
printf("\n先序遍歷:");
Preorder(T);
printf("\n中序遍歷:");
Inorder(T);
printf("\n后序遍歷:");
Postorder(T);
wait();//wait()會暫時停止行程的執行,直到有信號來到或子行程結束。
//如果在呼叫wait()時子行程已經結束,則wait()會立即回傳子行程結束狀態值。
}
/*BiTNode *Generate(int n)
{
int nl;
if (n==0)
return NULL;
BiTNode *P = new BiTNode;
P->data = rand() % 999 +1;
nl=rand() % (n);
P->left = Generate(nl);
P->right = Generate(n-1-nl);//這個遞回不是很懂什么意思
return P;
}
void generate(BiTNode *Tree)// 測驗用,樹的生成
{
printf("rrrrrrrrrrrrrrrrrrrrrrrrrrrr");
BiTNode *t;
t= Tree;
t->data = 11;
t->left =(BiTNode*) malloc(sizeof(BiTNode));
t->left->data=https://bbs.csdn.net/topics/22;
BENULL(t->left);
t->right=(BiTNode*) malloc(sizeof(BiTNode));
t->right->data = 33;
BENULL( t->right);
t->left->left =(BiTNode*) malloc(sizeof(BiTNode));
t->left->left->data=https://bbs.csdn.net/topics/44;
BENULL(t->left->left);
t->right->left=(BiTNode*) malloc(sizeof(BiTNode));
t->right->left->data=https://bbs.csdn.net/topics/55;
BENULL(t->right->left);
t->right->right=(BiTNode*) malloc(sizeof(BiTNode));
t->right->right->data=https://bbs.csdn.net/topics/66;
BENULL(t->right->right);
wait();
}
*/
//void showBinTree(BiTNode *Tree){//二叉樹的展示 ,用遞回方法分別先序、中序、后序遍歷以Tree為根指標的二叉樹;
//以下函式在本程式所在的位置生成文本檔案Map.txt,其中顯示以Tree為根指標的二叉樹
//}
//#include "BinT.h"// 這個是干什么的 ? 如不注釋掉這個就會自己另外生成一個小檔案,并且提示我某函式重復定義
//本實驗的各種要求:
//先序、中序、后序遍歷以Tree為根指標的二叉樹
//使用陣列elem中的亂數序列(以0表示結束,不包括0),生成以Tree為根指標的二叉排序樹
//在以Tree為根指標的二叉排序樹中查找結點
//從以Tree為根指標的二叉排序樹中洗掉結點(適用各種位置的結點)
//對以Tree為根指標的二叉樹,從根結點開始,逐層從左到右輸出各結點的資料
//提示:用陣列 BiTNode *queue[max] 構成佇列,利用這個佇列實作功能
//*1、隨機生成二叉樹。 2、生成并保存先(后)序、中序輸出序列。 3、按照保存的一對輸出序列恢復出二叉樹。 4、生成先(后)序、中序輸出序列。 5、比較兩對輸出序列。
//*不用遞回,先序、中序、后序遍歷以Tree為根指標的二叉樹
//提示:用陣列 BiTNode *stack[max] 構成堆疊,利用這個堆疊實作功能
//*用縮入格式的多行文本表示以Tree為根指標的二叉樹,例如:
// 324
// 123
// 746
// 690
// 567
//*用廣義表表示以Tree為根指標的二叉樹,例如
// (324(123(746()())(690()()))(567()()))
//*使用陣列elem中的亂數序列(以0表示結束,不包括0),生成赫夫曼樹,計算平均帶權路徑長度
uj5u.com熱心網友回復:
貼運行截圖 卡在哪里 你做了什么操作之后卡住轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/100740.html
標籤:C++ 語言
上一篇:MySolidBrush.SetColor(Color(255, 0, 0, 0));
下一篇:簡單的堆疊陣列的實作的問題
