Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Shitty program

Name: Anonymous 2010-05-24 23:11

Hi /prog/. I'm learning C, and wrote a program that takes a bunch of numbers and sorts them using a binary tree. I know it's not an efficient way to sort, I'm just learning binary trees. Could you look over it real quick and just give me some comments, like if there was something you would have done differently or something that's just stupid. Thanks a lot.

#include <stdio.h>
#include <stdlib.h>

struct node_ {
        int value;
        struct node_ *left, *right;
};

typedef struct node_ node;

node *insert(node *parent, int newval)
{
        if (!parent) {
                node *n = malloc(sizeof(node));
                n->value = newval;
                return n;
        }
        else if (newval == parent->value)
                return parent;
        else if (newval < parent->value) {
                parent->left = insert(parent->left, newval);
                return parent;
        }
        else {
                parent->right = insert(parent->right, newval);
                return parent;
        }
}

void print(node *top)
{
        if (!top)
                return;

        print(top->left);
        printf("%d ", top->value);
        print(top->right);
}

int main(int argc, char *argv[])
{
        puts("enter values, 0 to stop");
       
        int next;
        scanf("%d", &next);
       
        node *root = 0;
       
        while (next) {
                root = insert(root, next);
                scanf("%d", &next);
        }

        print(root);
        puts("");

        return 0;
}

Name: Anonymous 2010-05-24 23:49

Your binary tree is dropping values. It's turning your collection into a set, which is probably incorrect.
Also, you should be using four spaces per indentation level, not eight.

Name: Anonymous 2010-05-25 0:13

Your binary tree is dropping values. It's turning your collection into a set, which is probably incorrect.
That was on purpose, not really sure why I did that.
Also, you should be using four spaces per indentation level, not eight.
I used tabs in vim, apparently copying and pasting from an xterm converts to spaces. I haven't set my tab size to 4, which I guess I should do though.

Thanks for the comments, so the way I did this wasn't completely stupid or anything like that, right?

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List