# Thread: whats the next thing to learn

1. ## whats the next thing to learn

i think i have mastered linked lists as far as adding nodes to the head and tail and removing nodes printing and kind of sorting them. at least as far as creating a new sorted list and storing the nodes in order in the new list whats the next logical step

2. Double linked lists - You will find that they are much easier to work with

3. Also if you are looking for a few quick projects, have a look at Project Euler - They start off easy and then get harder

4. Try automating your daily tasks with C programs.

5. Maybe everything runs together on me (I'm only one my 2nd coffee), but aren't you also studying quicksort?

Am I confusing you with someone else asking about binary trees (AVL)?

Ok, that's from another board...so, here's the thing:

Binary trees are a TYPE of linked list (double linked list). Instead of the "next" pointer, double linked lists have "next" and "prev". In binary trees those nodes are named "left" and "right", and the algorithms used keep the tree sorted (and require you only have unique keys - no duplicate entries). After you learn binary trees, you learn they generally degrade when they are not balanced well, after which you learn to balance the trees as part of the insert/delete algorithm. The two main balancing types are "AVL" and "Red-Black" binary trees.

Linked lists, in the form of trees, make appearance in a number of real time applications, sometimes known as the octree, or spatial tree. The nodes don't "sort" per se, but organize data into spatial regions.

Disk storage may include the notion of M-way trees.

In other words, the linked list is the introduction to a wide variety of use case designs you'll find fascinating.

6. it was me asking about quick sort as i decided to play with sorting algorithms as a rest as i spent a week trying to master singly linked lists never heard or binary trees or why one would use them

7. Ah, that 3rd cup brought it all back

Indeed, the binary tree is an important study, and it is said that the stl's map is usually implemented as a red-black tree. They are most appropriate to choose when insertions/deletions are frequent. When searching is the primary use, it is best to consider sorted arrays (searching sorted arrays is faster, and even the sorting itself is faster than building a tree).

8. Originally Posted by cooper1200
i think i have mastered linked lists as far as adding nodes to the head and tail and removing nodes printing and kind of sorting them. at least as far as creating a new sorted list and storing the nodes in order in the new list whats the next logical step
research howto use GUI in C,so you can also do that in C not just with VB?

9. do i not need to understand classes to do gui stuff?

10. Yes.

11. Originally Posted by cooper1200
do i not need to understand classes to do gui stuff?
Yes, but that's because most modern GUI work is done with a library in C++, which itself is a collection of classes. You can become the consumer of such a library much more readily than to become the author of classes, and can even gain insight into how to design a collection of classes working toward a particular purpose by using a good GUI library. In other words, this is a bit of a paradox (a chicken/egg paradox).

Your awareness of the struct or class you've used for the linked list is just about enough to use the C++ GUI libraries.

If this is familiar to you:

Code:
```MyClass a;
MyClass b;

a.somefunction( 2 );
b.someotherfunction( 2 );```
Even though you don't see the class declaration, you probably realize that 'somefunction' must be a member of MyClass, and that whatever MyClass may be, you have an instantiation of it as variable "a", and so somefunction is being called on "a". Likewise, there is a "b" of type MyClass, and yet another member function is called on "b", and that "a" and "b" are two instantiations of MyClass.

If that is what you understand, you're able to use the GUI libraries for simple GUI applications.

Qt is rather popular, but I can recommend WxWidgets as a good alternative that is completely free.

There are others, but in the 21st century these are the top two. Microsoft provided one called "MFC" for decades, but it is all but entirely limited to Windows (there was a MAC version for a few years, but it died). However, in the modern era it makes no sense to make an application that can only run on Windows, when simply choosing either Qt or WxWidgets is the same basic work, but the product runs on Windows, Linux and MAC.

I am, however, referring to simple applications. For all higher targets of ambition, of course, you'll need to know more about designing classes and structs, using the STL, smart pointers, strings and the standard library.

The one thing that can get in the way is downloading, installing and the initial building of the GUI library. There are instructions, and if followed precisely, and if you're using a compiler/IDE the library says is supported, you're soon running one of the example programs.

12. if "myclass" is like saying struct somename a then i can see that a.data = x would assign the value of x to the member data of a which is an instance of struct somename. i think we are saying the same thing however aren't classes more complex than that with private and public members and inheritance and all that jazz. i half remember this from years ago and trying to do mfc's and giving up after copying out a program from a book on mfc's from Microsoft that didn't work. and giving up.

13. There is no difference between class and struct in C++ except the default to private acces in classes vs public access in structs. Otherwise, everything, absolutely everything, without the slightest exception, that applies to classes applies to structs.

Some go so far as to never use struct, and merely explicate public or private.

The only other difference you can perceive is that the struct keyword was available in C, but of course there was no notion of private or public (everything was public) access, and, obviously, C had no member functions, constructors, destructors or operators.

On another point, MFC should probably not be used as an example.

There's a lot of jokes inside that....it was a redefinition of the term "adequate".

That said, you may be thinking of C#. In C# there is a difference like that you suggest.

14. where does polymorphism and inheritance come into it all then

15. one of the reasons i went to vb many moons ago (i mean vb not vb.net) was you had a form and placed the components on the form ie a button suppose you wanted it to display a message when the user clicked it. the button had a click event and all you had to write with in the event was msgbox("hello") or whatever you wanted it to say. is this the same for c gui? obviously the syntax may be different

Popular pages Recent additions