There is a lot of good advice here, both specific and general. You'll want to consider which of it is most relevant to you, but if you pick any path pointed to from this thread you won't go far wrong, and you're already on the right track.

So, one specific observation and some general observations.

"Additionally, I also want to get into Stanford, and knowing things like this would help me be ahead."

You're doing many good things, but they may or may not be visible to the admissions process. If you want to get into Stanford or similar, talk to your school counselor and/or the admissions office of Stanford and other schools, and make sure you're doing everything they say you need to do to prepare the groundwork for application and admission. Don't assume anything here, find out for sure and execute.

Time spent on data structures and algorithms is NOT time wasted, but you may or may not need to spend much time on it now. You'll eventually need it later. Don't sweat it, and don't write it off. It would be good to survey it so you know where to jump in if you suddenly need it.

You say you get bored with tutorials and then want to jump in and write something, but then you feel you don't learn the tutorial's subject. Jump in and write something, that's great. But maybe spend a small part of your time to complete or skim the tutorial, or to study the actual thing in more depth. This is some of the tedious but necessary work required to master things.

You say you don't feel you can write competitive phone or web apps. Maybe, but who cares? There's an old saying in computer science: you build the first one to throw away. The idea is you may not really understand the problem until you've come up with a solution. The first solution may suck, but you've gained valuable insight for implementing an actual good solution.

Except for luck, you'll need to write an app or two to really understand what it takes to write a good app. Doing that will also give you ideas on what to write next, and how to do it. So go ahead, write crap, the next one(s) will be great.

Related, here's Ira Glass (producer of This American Life) on Storytelling: http://www.youtube.com/watch?v=loxJ3FtCJJA . This gets posted on HN once in awhile.

He's speaking as an accomplished and experienced radio producer, giving advice to young reporter/producers just starting out. The key is part 3, although you should watch them all, they're each only a few minutes long. But in part 3, he points out that the young video producer (or programmer, chef, whatever) has really good taste but not much experience. He knows that what he's producing isn't great, and may be crap, in fact his taste is so good he can see without a doubt that his efforts have some crap in them. That's you. But you have to go through the body of work that includes crap, until you reach the point that you have the chops to wield your taste effectively.

So, don't avoid the crap, you have to do it to get to the non-crap. Another way to put it: perfection is the enemy of the good. Lucky you, you'll produce your crap before you have a Pointy Haired Boss.

Finally, you seem really focused and driven. That's fabulous, great. But don't be too focused. Learn to enjoy yourself and the world. Get out in the world. Be The Most Interesting Man in the World. This is a great time to be alive, especially if you live in a developed country. Be very open to lots of different experiences, different people, different ideas. Go places and do things. Experiences and people are what you'll remember and treasure, not code. People are what will pull you through the suck, not code. Improve the world with code (please, do), but enjoy the world too.