01/10/2018, 00:59
Ai giải thích hộ em tại sao nó không vào điều kiện if Trong hàm Push được k!
đây là đoạn code của em.
#include<stdio.h>
#include<conio.h>
#include<iostream>
typedef struct Node {
int data;
struct Node *pleft;
struct Node *pright;
} NODE;
typedef struct Stack {
NODE *top;
} STACK;
typedef NODE* Tree;
void khoitao(STACK &stack, Tree &tree) {
stack.top = NULL;
tree = NULL;
}
NODE* getNode(int &x) {
NODE* p = new NODE;
if (p == NULL) {
return NULL;
}
else {
p->data = x;
p->pleft = NULL;
p->pright = NULL;
return p;
}
}
int isEmpty(STACK &stack) {
return stack.top == NULL;
}
int isEmptyTree(Tree &tree) {
return tree == NULL;
}
void Push(STACK &stack, NODE *p) {
if (isEmpty(stack)) {
stack.top = p;
}
else {
p->pright = stack.top;
stack.top->pleft = p->pleft;
stack.top = p;
}
}
void Pop(STACK &stack) {
int x;
if (isEmpty(stack)) {
return;
}
else {
NODE* p = stack.top;
x = p->data;
printf("%d ", x);
stack.top = p->pright;
delete p;
}
}
void addTree(Tree &tree, int &x) {
NODE* p = getNode(x);
if (isEmptyTree(tree)) {
NODE* p = getNode(x);
tree = p;
}
else {
if (tree->data > x) {
addTree(tree->pleft, x);
}
else if (tree->data < x) {
addTree(tree->pright, x);
}
}
}
void DuyetCayDeQuy(Tree &tree) {
if (isEmptyTree(tree)) {
return;
}
else {
printf("%d ", tree->data);
DuyetCayDeQuy(tree->pleft);
DuyetCayDeQuy(tree->pright);
}
}
void DuyetCayKhongDeQuy(Tree &tree) {
STACK stack;
NODE *p;
Push(stack, tree);
while (!isEmpty(stack)) {
p = stack.top;
Pop(stack);
if (p->pright != NULL) {
Push(stack, p->pright);
}
if (p->pleft != NULL) {
Push(stack, p->pleft);
}
}
}
/*
void Nhap(STACK &stack){
NODE* p;
int x;
for(int i = 0 ; i < 5; i++){
scanf("%d",&x);
p = getNode(x);
Push(stack,p);
}
while(!isEmpty(stack)){
Pop(stack);
}
}
*/
int main() {
Tree tree;
Stack stack;
khoitao(stack, tree);
int luachon, x;
do {
printf("
Nhap 2 de duyet cay NLR
Nhap 1 de them.
Nhap 0 de thoat.
");
printf("
Moi nhap lua chon cua ban.
");
scanf_s("%d", &luachon);
switch (luachon) {
case 1: {
printf("
Moi ban nhap so can chen: ");
scanf_s("%d", &x);
printf("
");
addTree(tree, x);
break;
}
case 2: {
DuyetCayKhongDeQuy(tree);
break;
}
}
} while (luachon != 0);
system("pause");
return 0;
}
Bài liên quan