Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# array of struct?

Posted on 2008-10-24
Medium Priority
266 Views
say I have:

and I want to create an array of TreeNode, how do I do that?
``````typedef struct treeNode
{ ..................
.......................
} TreeNode;
``````
0
Question by:kuntilanak
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 5
• 5
• 3

LVL 55

Expert Comment

ID: 22801324
Declare a pointer:
TreeNode *nodes;

Then you can create the array dynamically:

nodes = new TreeNode[somesize];

but these will be unsual since a tree is not used to be stored in an array, but in some kind of dynamically collection.
0

Author Comment

ID: 22801340
I don't think that C has a new operation, what if I do:

TreeNode * arr[100];

will that work?
0

LVL 55

Expert Comment

ID: 22801369
>>I don't think that C has a new operation
You put your question in the C and C++ areas

>>what if I do:
>>TreeNode * arr[100];
You just need:
TreeNode arr[100];

0

Author Comment

ID: 22801505
okay, so TreeNode arr[100];

will also work for me?
0

LVL 55

Expert Comment

ID: 22801641
yes, it will.
0

Author Comment

ID: 22801707
someone recommend me to use malloc, how can I do that?
0

LVL 55

Expert Comment

ID: 22801735
if you need a fixed set of object, you can work as described.
if you don't know the number of elements at design time, then malloc will help you better, as the 'new' operator does in C++. Something like:

TreeNode *arr = (TreeNode *)malloc(sizeof(TreeNode) * num_elements);

where you have to define num_elements.
But notice you are responsible to free that memory somewhere with the free() function, like:

free(arr);
0

Author Comment

ID: 22801799
Why is it not TreeNode * arr[100]; instead of TreeNode arr[100];??
0

Author Comment

ID: 22802149
and say I want to create a function to traverse the array in order to find a specific value, will this work
``````static TreeNode * traverseArray(TreeNode * array[], TreeNode * t){
for (int i = 0; i<100; i++){
if (strcmp(array[1]->name, t->name) == 0)
return t;
}
return NULL;
}
``````
0

LVL 53

Expert Comment

ID: 22806471
>> Why is it not TreeNode * arr[100]; instead of TreeNode arr[100];??

Because then it would be an array of pointers to TreeNode, not an array of TreeNode's as you wanted :)

You can do that of course, but you'd need to modify the rest of the code to work with that.

>> and say I want to create a function to traverse the array in order to find a specific value, will this work

The idea is good, but there's a few mistakes :
``````TreeNode *traverseArray(TreeNode *array[], TreeNode *t) {
int i = 0;
for (i = 0; i < 100; i++) {                                      /* <--- will the array always have size 100 ? */
if (strcmp(array[i]->name, t->name) == 0) {                    /* <--- use i as index ! */
return array[i];                                             /* <--- return the element from the array */
}
}
return NULL;
}
``````
0

LVL 53

Expert Comment

ID: 22808825
Didn't jaime_olivares answer your question ? I merely answered a follow-up question. You need to take care in accepting the right answers. Not only in order not to offend the experts who took their time to help you, but also to have a usable PAQ database.
0

LVL 55

Accepted Solution

Jaime Olivares earned 1500 total points
ID: 22817564
I think a split woud be a fair decision.
0

LVL 53

Expert Comment

ID: 22819868
kuntilanak : the reply you accepted does not answer your initial question. You need to make some effort to identify the reply (replies) that answered your question, and accept those. Otherwise, it'll be more difficult for other people to find the answer.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Having just graduated from college and entered the workforce, I donâ€™t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back toâ€¦R. Â  So â€¦
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilationâ€¦
The viewer will learn how to implement Singleton Design Pattern in Java.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and â€¦
###### Suggested Courses
Course of the Month6 days, 7 hours left to enroll