c++ - C语言算法指针问题?

浏览:39日期:2023-04-01

问题描述

c++ - C语言算法指针问题?

上面诗题目,下面是代码:

#include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct node { struct node *lchild; struct node *rchild; int c;} Node;void postOrder(Node *T) { if (T->lchild != NULL) {postOrder(T->lchild); } if (T->rchild != NULL) {postOrder(T->rchild); } printf('%d ', T->c);}void inOrder(Node *T) { if (T->lchild != NULL) {inOrder(T->lchild); } printf('%d ', T->c); if (T->rchild != NULL) {inOrder(T->rchild); }}void preOrder(Node *T) { printf('%d ', T->c); if (T->lchild != NULL) {preOrder(T->lchild); } if (T->rchild != NULL) {preOrder(T->lchild); }}Node *Insert(Node *T, int x) { if (T == NULL) {T = (Node *)malloc(sizeof(Node));T->c = x;T->lchild = T->rchild = NULL; } else if(x < T->c) {T->lchild = Insert(T->lchild, x); } else if(x > T->c) {T->rchild = Insert(T->rchild, x); } return T;}int main() { int n; while (scanf('%d', &n) != EOF) {Node *T = NULL;int i = 0;int x = 0;for (i = 0; i < n; i++) { scanf('%d', &x); T = Insert(T, x); preOrder(T);}preOrder(T);printf('n');inOrder(T);printf('n');postOrder(T);printf('n'); } return 0;}

我编译的时候没有问题,可一运行就崩溃了。估计是指针出问题了,可我实在不知道该怎么改了,求大神指导。

问题解答

回答1:

在void preOrder(Node *T)函数实现的第6行,应该是preOrder(T->rchild);而不是重复地 preOrder(T->lchild);,属于粗疏错误,应该多学debug。

回答2:

1、NODE *T写到while外面2、Insert 没有处理等于的情况

相关文章: