Kamis, 24 November 2011

Stereo Hearts - Gym Class Heroes Feat. Adam Levine

[Adam Levine:]
My heart's a stereo
It beats for you, so listen close
Hear my thoughts in every no-o-o-te
Make me your radio
And turn me up when you feel low
This melody was meant for you
Just sing along to my stereo

[Travie McCoy:]
Gym Class Heroes baby!
If I was just another dusty record on the shelf
Would you blow me off and play me like everybody else?
<span class="fullpost">
If I asked you to scratch my back, could you manage that?
Like yea fucked up, check it Travie, I can handle that
Furthermore, I apologize for any skipping tracks
It's just the last girl that played me left a couple cracks
I used to, used to, used to, now I'm over that
'Cause holding grudges over love is ancient artifacts

If I could only find a note to make you understand
I'd sing it softly in your ear and grab you by the hand
Just keep it stuck inside your head, like your favorite tune
And know my heart's a stereo that only plays for you

[Chorus:]
My heart's a stereo
It beats for you, so listen close
Hear my thoughts in every no-o-o-te
Make me your radio
And turn me up when you feel low
This melody was meant for you
Just sing along to my stereo

Oh oh oh oh, oh oh oh oh to my stereo
Oh oh oh oh so sing along to my stereo

[Travie McCoy:]
Let's go!
If I was an old-school fifty pound boombox (remember them?)
Would you hold me on your shoulder wherever you walk
Would you turn my volume up in front of the cops (turn it up)
And crank it higher everytime they told you to stop
And all I ask is that you don't get mad at me
When you have to purchase mad D batteries
Appreciate every mixtape your friends make
You never know we come and go like on the interstate

I think I finally found a note to make you understand
If you can hit it, sing along and take me by the hand
Just keep me stuck inside your head, like your favorite tune
You know my heart's a stereo that only plays for you

[Chorus:]
My heart's a stereo
It beats for you, so listen close
Hear my thoughts in every no-o-o-te
Make me your radio
Turn me up when you feel low
This melody was meant for you
Just sing along to my stereo

Oh oh oh oh, oh oh oh oh to my stereo
Oh oh oh oh so sing along to my stereo

[Bridge:]
I only pray you'll never leave me behind (never leave me)
Because good music can be so hard to find (so hard to find)
I take your head and hold it closer to mine
Thought love was dead, but now you're changing my mind

[Chorus:]
My heart's a stereo
It beats for you, so listen close
Hear my thoughts in every no-o-o-te
Make me your radio
Turn me up when you feel low
This melody was meant for you
Just sing along to my stereo

Oh oh oh oh, oh oh oh oh to my stereo
Oh oh oh oh (Gym Class Heroes baby!) so sing along to my stereo

Yeah


Bruno Mars - The Lazy

Today I don't feel like doing anything
I just wanna lay in my bed
Don't feel like picking up my phone
So leave a message at the tone
'Cause today I swear I'm not doing anything

I'm gonna kick my feet up
Then stare at the fan

Turn the TV on, throw my hand in my pants
Nobody's gonna tell me I can't
<span class="fullpost">
I'll be lounging on the couch,
Just chillin' in my snuggie
Click to MTV, so they can teach me how to dougie
'Cause in my castle I'm the freaking man
Oh, oh

Yes I said it
I said it
I said it 'cause I can

Today I don’t feel like doing anything
I just wanna lay in my bed
Don’t feel like picking up my phone
So leave a message at the tone
'Cause today I swear I'm not doing anything
Nothing at all

Tomorrow I'll wake up, do some P90X
Meet a really nice girl, have some really nice sex
And she's gonna scream out: 'This is Great'
(Oh my god, this is great)
Yeah

I might mess around, get my college degree
I bet my old man will be so proud of me
But sorry pops, you'll just have to wait
Oh, oh

Yes I said it
I said it
I said it 'cause I can

Today I don’t feel like doing anything
I just wanna lay in my bed
Don’t feel like picking up my phone
So leave a message at the tone
'Cause today I swear I'm not doing anything

No, I ain't gonna comb my hair
'Cause I ain't going anywhere
No, no, no, no, no, no, no, no, no, oh

I'll just strut in my birthday suit
And let everything hang loose
Yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah-eah

Oh
Today I don’t feel like doing anything
I just wanna lay in my bed
Don’t feel like picking up my phone
So leave a message at the tone
'Cause today I swear I'm not doing anything

Nothing at all
Nothing at all
Nothing at all



Bad Meets Evil Feat. Bruno Mars - Lighter

[Chorus]
This ones for you and me
Living out our dreams
We are right where we should be
With my arms out wide
I open my eyes
And now
All I wanna see
Is a sky full of lighters
A sky full of lighters

[Eminem]
By the time you hear this I will have already spiraled up
I would never do nothin to let you cowards fuck my world up
If I was you I would duck or get struck like lightning fighters
Keep fighting
Put your lighters up
Point em’ skyward UH!
Had a dream I was king
I woke up
Still king
This rap game’s nipples is mine
For the milking
Till nobody else even fuckin feels me
Till it kills me
I swear to god I’ll be the fucking illest in the music
There is
Or there ever will be
Disagree? Feel free, but from now on I’m refusing, to ever give up,
Only thing I ever gave up is using
No more excuses
Excuse me if my head’s too big for this building
And pardon me if I’m a cocky prick
But you cocks are slick
Poppin shit on how you flipped your life around
Crock of shit
Who you dicks tryna’ kid?
Flip dick you did opposite
You stayed the same
Cause cock backwards is still cock you prick
I love it when I tell’em shove it
Cause it wasn’t that
Long ago
When Marshall sat
Flustered, lack lustered
Cause he couldn’t cut
Mustered
Muster up
Nothin
Brain fuzzy
Cause he’s buzzing
Woke up from that buzz and now you wonder
Why he does it how he does
Wasn’t cause he had
Buzzards circlin’ round his head
Waitin for him to drop dead, was it?
Or was it cause some bitches wrote him off
Little hussy ass fusses
Fuck it
Guess it doesn’t matter now does it?
What difference it make
Whats it take?
To get it through you thick skulls that this ain’t
Some bullshit
People don’t usually come back this way
From a place that was as dark as I was
And just to get to this place
Some of these words be like a switchblades to a hater’s rib cage
And let it be known that from this day forward
I wanna just say thanks
Cause your hate is what gave me the strength
So let them bics raise
Cause I came at 5’9″
But I feel like I’m 6’8″

[Chorus]
This ones for you and me
Living out our dreams
Where are right where we should be
With my arms out wide
I open my eyes
And now
All I wanna see
Is a sky full of lighters
A sky full of lighters

[Royce Da 5’9"]
By the time you hear this I probably already be outie
I advance like going from toting iron to goin
And buying 4 or 5 of the homies, to iron man outie
My daddy told me, slow down boy you’re going to blow it
And I ain’t gotta stop to be the minute to tell shady I love the same way that he did Dr. Dre on the chronic
Tell’em how real he is
Or how high I am
Or how I would kill him, for him to know it
I cry when he tears
My daddy gotta bad back
So its only right that I write
Till he can march right in to that post office and tell’em to hang it up
Now his careers Lebron’s jersey in twenty years
I stop when I’m at the very top
You shitted on me on your way up
It’s bout to be a scary drop
Cause what goes up
Must come down
You goin down
I’m somethin you don’t wanna see
Like a hairy box
Every hour
Happy hour now
Life is wacky now
Used to have to eat the cat to get the pussy
Now I’m just a cat’s meow
Owwww
I’m classic now
Always down for the catch-way
Like Pacquiao
Yall are doomed
I remember when T-Pain ain’t wanna work with me
My car starts itself
Parks itself
And auto-tunes
Cause now I’m in the Astin
I went from having my city locked up
To getting treated like Kwame Kilpatrick
And now I’m fantastic
Compared to a weed high
And yall’ niggas the sky sippin like bitches
On a radio and TV
See me, we fly
Y’all buggin out like Wendy Williams
Starin’ at a bee hive
And how real is that?
I remember signing my first deal
Now I’m the second best
I can deal with that
Now Bruno can show his ass
Without the MTV awards gag

[Bridge]
You and I
Know what it’s like
To be kicked down
Forced to fight
But tonight
We’re alright
So hold up your lights
Let it shine
Cause..

[Chorus]
This ones for you and me
Living out our dreams
We are right where we should be
With my arms out wide
I open my eyes
And now
All I wanna see
Is a sky full of lighters
A sky full of lighters

LMFO - Party Rock Anthem

PARTY ROCK
YEA
Whoa!
LET'S GO!
Party rock is in the house tonight
Everybody just have a good time
And we gonna make you lose your mind
Everybody just have a good time

Party rock is in the house tonight
Everybody just have a good time
And we gonna make you lose your mind
We just wanna see ya!

Shake that!

In the club party rock, lookin' for your girl
She on my jock (huh) non stop when we in the spot
Booty move away like she on the block
What the track I got to know
Tight jeans tattoo cause I'm rock and roll
Half black half white domino
Gain the money Oprah Doe!

Yo!
I'm running through these hoes like drano
I got that devilish flow rock and roll no halo
We party rock yea! that's the crew that I'm repping
On the rise to the top no led in our zeppelin
Hey!

Party rock is in the house tonight
Everybody just have a good time
And we gonna make you lose your mind
Everybody just have a good time

Let's go
Party rock is in the house tonight
Everybody just have a good time
And we gonna make you lose your mind

We just wanna see you!

Shake that!

Every day I'm shuffling
Shuffling shuffling

Step up fast and be the first girl to make me throw this cash
We get money don't be mad now stop hating is bad

One more shot for us
(Another round)
Please fill up my cup
(Don't mess around)
We just wanna see
(You shake it now)
Now you wanna be
(You're naked now)

Get up get down put your hands up to the sound [x3]
Put your hands up to the sound [x2]
Get up [x9]
Put your hands up to the sound, to the sound
Put your hands up! [x4]

Party rock is in the house tonight (Put your hands up!)
Everybody just have a good time (Put your hands up!)
And we gonna make you lose your mind (Put your hands up!)
Everybody just have a good good good time

Oh! Oh! (Put your hands up)
Oh! Oh! Time to fill it now!
Oh! Oh! (Put your hands up)
Oh! Oh! (Put your hands up)

Shake that!
Every day I'm shuf-f-f-ling

Put your Put your
Put your Put your (Yeah Yeah)
Put your Put your (Whoa!)
Put your Put your
Put your hands up
Your hands up
Put your hands up


I feel like I just seen the sun for the first time
You make my life bright cause you shine
It's me and you baby, it's our time
I'm living my dream, girl cause you mine
You got me skippin' down the street
And singin' love songs all out of key
I didn't smoke nothin' but I feel so high
And I know why
It's a love thing, it's got to be
Your heart's all locked and I got the key
It feels like I just won the lottery
'Cause I got my girl and she got me

You my new obsession
All I want to do
You my new obsession, girl
I feel on top of the world with you baby
I want to dance and party tonight
I feel on top of the world with my lady
I'm gonna rock your body all night
She makes me wanna sing

La, la la la [x8]

Oh, I can't get you out my mind
Everything you do is feelin' right
Remember that way you caught my eye?
I remember that way you was walkin' by
Ooh girl, watch out now
You looked at me, turned around and smiled
Gave me eyes, my heart went wild
Hypnotized, this love starts now
And how do I know you're real?
It really doesn't matter, it's the way I feel
You make me feel super like the man of steel
Got me goin' stupid, pickin' daffodils

You my new obsession
All I want to do
You my new obsession, girl
I feel on top of the world with you baby
I want to dance and party tonight
I feel on top of the world with my lady
I'm gonna rock your body all night
She makes me wanna sing

La, la la la... [x14]

You my new obsession [x5]

All I want to do
You my new obsession, girl
I feel on top of the world with you baby
I want to dance

Dance... [etc.]

I feel on top of the world with you baby
I want to dance and party tonight
I feel on top of the world with my lady
I'm gonna rock your body all night

Rihanna feat. Calvin Harris - We Found Love

Yellow diamonds in the light
Now we’re standing side by side
As your shadow crosses mine
What it takes to come alive

It’s the way I’m feeling I just can’t deny
But I’ve gotta let it go

We found love in a hopeless place
We found love in a hopeless place
We found love in a hopeless place
We found love in a hopeless place
Shine a light through an open door
Love a life I will divide
Turn away 'cause I need you more
Feel the heartbeat in my mind

It’s the way I’m feeling I just can’t deny
But I’ve gotta let it go

We found love in a hopeless place
We found love in a hopeless place
We found love in a hopeless place
We found love in a hopeless place

Yellow diamonds in the light
Now we’re standing side by side
As your shadow crosses mine

We found love in a hopeless place
We found love in a hopeless place
We found love in a hopeless place
We found love in a hopeless place

We found love in a hopeless place
We found love in a hopeless place
We found love in a hopeless place
We found love in a hopeless place



"A Year Without Rain"

Can you feel me
When I think about you
With every breath I take
Every minute
No matter what I do
My world is an empty place

Like I've been wandering the desert
For a thousand days (oh)
Don't know if it's a mirage
But I always see your face, Baby

[Chorus:]
I'm missing you so much
Can't help it, I'm in love
A day without you is like a year without rain
I need you by my side
Don't know how I'll survive
A day without you is like a year without rain

The stars are burning
I hear your voice in my mind (in my mind)
Can't you hear me calling?
My heart is yearning
Like the ocean that's running dry
Catch me, I'm falling

It's like the ground is crumbling underneath my feet
Won't you save me?
There's gonna be a monsoon
When you get back to me (oh, baby)

[Chorus]

So let this drought come to an end
And make this desert flower again
I need you here
I can't explain
But a day without you
Is like a year without rain (oh)

[Chorus]

Last Friday Night (T.G.I.F.) - Katy Parry

There's a stranger in my bed,
There's a pounding in my head
Glitter all over the room
Pink flamingos in the pool
I smell like a minibar
DJ's passed out in the yard
Barbie's on the barbeque
Is this a hickie or a bruise?
Pictures of last night

Ended up online
I'm screwed
Oh well
It's a blacked out blur
But I'm pretty sure it ruled
Damn

Last Friday night
Yeah, we danced on tabletops
And we took too many shots
Think we kissed but I forgot

Last Friday night
Yeah, we maxed our credit cards
And got kicked out of the bar
So we hit the boulevard

Last Friday night
We went streaking in the park
Skinny dipping in the dark
Then had a ménage à trois
Last Friday night
Yeah I think we broke the law
Always say we're gonna stop
Whoa-oh-oah

This Friday night
Do it all again
This Friday night
Do it all again

Trying to connect the dots
Don't know what to tell my boss
Think the city towed my car
Chandelier is on the floor
Ripped my favorite party dress
Warrant's out for my arrest
Think I need a ginger ale
That was such an epic fail

Pictures of last night
Ended up online
I'm screwed
Oh well
It's a blacked out blur
But I'm pretty sure it ruled
Damn

Last Friday night
Yeah, we danced on table tops
And we took too many shots
Think we kissed but I forgot

Last Friday night
Yeah, we maxed our credit cards
And got kicked out of the bar
So we hit the boulevards

Last Friday night
We went streaking in the park
Skinny dipping int he dark
Then had a ménage à trois

Last Friday night
Yeah I think we broke the law
Always say we're gonna stop
Oh whoa oh

This Friday night
Do it all again
Do it all again
This Friday night
Do it all again
Do it all again
This Friday night

T.G.I.F.
T.G.I.F.
T.G.I.F.
T.G.I.F.
T.G.I.F.
T.G.I.F.

Last Friday night
Yeah, we danced on table tops
And we took too many shots
Think we kissed but I forgot

Last Friday night
Yeah, we maxed our credit cards
And got kicked out of the bar
So we hit the boulevard

Last Friday night
We went streaking in the park
Skinny dipping in the dark
Then had a ménage à trois

Last Friday night
Yeah I think we broke the law
Always say we're gonna stop
Oh-whoa-oh
This Friday night
Do it all again

Move Like Jagger - Maroon5

Oh, yeah
Oh!

[Verse 1:]
Just shoot for the stars
If it feels right
And aim for my heart
If you feel like
And take me away and make it OK
I swear I'll behave

You wanted control
So we waited
I put on a show
Now I make it


You say I'm a kid
My ego is big
I don't give a shit
And it goes like this

[Chorus:]
Take me by the tongue
And I'll know you
Kiss me 'til you're drunk
And I'll show you

All the moves like Jagger
I've got the moves like Jagger
I've got the moves like Jagger

I don't need to try to control you
Look into my eyes and I'll own you

With them moves like Jagger
I've got the moves like Jagger
I've got the moves like Jagger

[Verse 2:]
Maybe it's hard
When you feel like you're broken and scarred
Nothing feels right
But when you're with me
I'll make you believe
That I've got the key

Oh
So get in the car
We can ride it
Wherever you want
Get inside it
And you want to steer
But I'm shifting gears
I'll take it from here (Oh! Yeah yeah!)
And it goes like this (Uh)

[Chorus:]
Take me by the tongue
And I'll know you (Uh)
Kiss me 'til you're drunk
And I'll show you

All the moves like Jagger
I've got the moves like Jagger
I've got the moves like Jagger

I don't need to try to control you (Oh, yeah)
Look into my eyes and I'll own you

With them moves like Jagger
I've got the moves like Jagger (Yeah yeah)
I've got the moves like Jagger

[Bridge:]
You wanna know how to make me smile
Take control, own me just for the night
And if I share my secret
You're gonna have to keep it
Nobody else can see this

So watch and learn
I won't show you twice
Head to toe, oooh baby rub me right
But if I share my secret
You're gonna have to keep it
Nobody else can see this (Ay! Ay! Ay! Aaay!)

And it goes like this

[Chorus:]
Take me by the tongue (Take me by the tongue)
And I'll know you
Kiss me 'til you're drunk
And I'll show you (Yeah yeah yeah!)

All the moves like Jagger
I've got the moves like Jagger
I've got the moves like Jagger
(Oh, yeah)
I don't need to try to control you
Look into my eyes and I'll own you

With them moves like Jagger
I've got the moves like Jagger
I've got the moves like Jagger


Rabu, 23 November 2011

Contoh Program Pohon

 Silahkan dicoba
#include <iostream>
#include <deque>
#include <climits>
using namespace std;

struct Tree
{
char data;
Tree *left;
Tree *right;
Tree *parent;
};

Tree* lookUp(struct Tree *node, char key)
{
if(node == NULL) return node;

if(node->data == key) return node;
else {
if(node->data < key)
return lookUp(node->right, key) ;
else
return lookUp(node->left, key);
}
}

Tree* leftMost(struct Tree *node)
{
if(node == NULL) return NULL;
while(node->left != NULL)
node = node->left;
return node;
}

struct Tree *newTreeNode(int data)
{
Tree *node = new Tree;
node->data = data;
node->left = NULL;
node->right = NULL;
node->parent = NULL;

return node;
}

struct Tree* insertTreeNode(struct Tree *node, int data)
{
static Tree *p;
Tree *retNode;

if(node != NULL) p = node;

if(node == NULL) {
retNode = newTreeNode(data);
retNode->parent = p;
return retNode;
}
if(data <= node->data ) {
p = node;
node->left = insertTreeNode(node->left,data);
}
else {
p = node;
node->right = insertTreeNode(node->right,data);
}
return node;
}

void isBST(struct Tree *node)
{
static int lastData = INT_MIN;
if(node == NULL) return;

isBST(node->left);

/* check if the given tree is BST */
if(lastData < node->data)
lastData = node->data;
else {
cout << "Not a BST" << endl;
return;
}

isBST(node->right);
return;
}

int treeSize(struct Tree *node)
{
if(node == NULL) return 0;
else
return treeSize(node->left) + 1 + treeSize(node->right);
}

int maxDepth(struct Tree *node)
{
if(node == NULL) return 0;

int leftDepth = maxDepth(node->left);
int rightDepth = maxDepth(node->right);

return leftDepth > rightDepth ?
leftDepth + 1 : rightDepth + 1;
}

int minDepth(struct Tree *node)
{
if(node == NULL) return 0;

int leftDepth = minDepth(node->left);
int rightDepth = minDepth(node->right);

return leftDepth < rightDepth ?
leftDepth + 1 : rightDepth + 1;
}

bool isBalanced(struct Tree *node)
{
if(maxDepth(node)-minDepth(node) <= 1)
return true;
else
return false;
}

/* Tree Minimum */
Tree* minTree(struct Tree *node)
{
if(node == NULL) return NULL;
while(node->left)
node = node -> left;
return node;
}

/* Tree Maximum */
Tree* maxTree(struct Tree *node)
{
while(node->right)
node = node -> right;
return node;
}

/* In Order Successor - a node which has the next higher key */
Tree *succesorInOrder(struct Tree *node)
{
/* if the node has right child, seccessor is Tree-Minimum */
if(node->right != NULL) return minTree(node->right);

Tree *y = node->parent;
while(y != NULL && node == y->right) {
node = y;
y = y->parent;
}
return y;
}

/* In Order Predecessor - a node which has the next lower key */
Tree *predecessorInOrder(struct Tree *node)
{
/* if the node has left child, predecessor is Tree-Maximum */
if(node->left != NULL) return maxTree(node->left);

Tree *y = node->parent;
/* if it does not have a left child,
predecessor is its first left ancestor */
while(y != NULL && node == y->left) {
node = y;
y = y->parent;
}
return y;
}

Tree *lowestCommonAncestor(Tree *root, Tree *p, Tree *q)
{
Tree *left, *right;
if(root == NULL) return NULL;
if(root->left == p || root->left == q
|| root->right == p || root->right == q) return root;
else {
left = lowestCommonAncestor(root->left,p,q);
right = lowestCommonAncestor(root->right, p,q);
if(left && right)
return root;
else
return (left) ? left : right;
}
}

void clear(struct Tree *node)
{
if(node != NULL) {
clear(node->left);
clear(node->right);
delete node;
}
}
/* print tree in order */
/* 1. Traverse the left subtree.
2. Visit the root.
3. Traverse the right subtree.
*/

void printTreeInOrder(struct Tree *node)
{
static int lastData = INT_MIN;
if(node == NULL) return;

printTreeInOrder(node->left);
cout << node->data << " ";
printTreeInOrder(node->right);
}

/* print tree in postorder*/
/* 1. Traverse the left subtree.
2. Traverse the right subtree.
3. Visit the root.
*/
void printTreePostOrder(struct Tree *node)
{
if(node == NULL) return;

printTreePostOrder(node->left);
printTreePostOrder(node->right);
cout << node->data << " ";
}

/* print in preorder */
/* 1. Visit the root.
2. Traverse the left subtree.
3. Traverse the right subtree.
*/
void printTreePreOrder(struct Tree *node)
{
if(node == NULL) return;

cout << node->data << " ";
printTreePreOrder(node->left);
printTreePreOrder(node->right);
}

/* printing array */
void printThisPath(int path[], int n)
{
for(int i = 0; i < n; i++)
cout << (char)path[i] << " ";
cout << endl;
}

/* recursion routine to find path */
void pathFinder(struct Tree *node, int path[], int pathLength)
{
if(node == NULL) return;
path[pathLength++] = node->data;

/* Leaf node is the end of a path.
So, let's print the path */
if(node->left == NULL && node->right == NULL)
printThisPath(path, pathLength);
else {
pathFinder(node->left, path, pathLength);
pathFinder(node->right, path, pathLength);
}
}

/*printing all paths :
Given a binary tree, print out all of its root-to-leaf
paths, one per line. Uses a recursive helper to do the work. */

void printAllPaths(struct Tree *root)
{
int path[100];
pathFinder(root,path,0);
}

bool matchTree(Tree *r1, Tree *r2)
{
/* Nothing left in the subtree */
if(r1 == NULL && r2 == NULL)
return true;
/* Big tree empty and subtree not found */
if(r1 == NULL || r2 == NULL)
return false;
/* Not matching */
if(r1->data != r2->data)
return false;
return (matchTree(r1->left, r2->left) &&
matchTree(r1->right, r2->right));
}

bool subTree(Tree *r1, Tree *r2)
{
/*Big tree empty and subtree not found */
if(r1 == NULL)
return false;
if(r1->data == r2->data)
if(matchTree(r1, r2)) return true;
return (subTree(r1->left, r2) || subTree(r1->right, r2));
}

bool isSubTree(Tree *r1, Tree *r2)
{
/* Empty tree is subtree */
if(r2 == NULL)
return true;
else
return subTree(r1, r2);
}

/* change a tree so that the roles of the left
and right hand pointers are swapped at every node */
void mirror(Tree *r)
{
if(r == NULL) return;

Tree *tmp;
mirror(r->left);
mirror(r->right);

/* swap pointers */
tmp = r->right;
r->right = r->left;
r->left = tmp;
}

/* create a new tree from a sorted array */
Tree *addToBST(char arr[], int start, int end)
{
if(end < start) return NULL;
int mid = (start + end)/2;

Tree *r = new Tree;
r->data = arr[mid];
r->left = addToBST(arr, start, mid-1);
r->right = addToBST(arr, mid+1, end);
return r;
}

Tree *createMinimalBST(char arr[], int size)
{
return addToBST(arr,0,size-1);
}

/* Breadth first traversal using queue */
void BreadthFirstTraversal(Tree *root)
{
if (root == NULL) return;
deque <Tree *> queue;
queue.push_back(root);

while (!queue.empty()) {
Tree *p = queue.front();
cout << p->data << " ";
queue.pop_front();

if (p->left != NULL)
queue.push_back(p->left);
if (p->right != NULL)
queue.push_back(p->right);
}
cout << endl;
}

/* find n-th max node from a tree */
void NthMax(struct Tree* t)
{
static int n_th_max = 5;
static int num = 0;
if(t == NULL) return;
NthMax(t->right);
num++;
if(num == n_th_max)
cout << n_th_max << "-th maximum data is " << t->data << endl;
NthMax(t->left);
}

/* Converting a BST into an Array */
void TreeToArray(struct Tree *node, int a[]){
static int pos = 0;

if(node){
TreeToArray(node->left,a);
a[pos++] = node->data;
TreeToArray(node->right,a);
}
}

int main(int argc, char **argv)
{
char ch, ch1, ch2;
Tree *found;
Tree *succ;
Tree *pred;
Tree *ancestor;
char charArr[9]
= {'A','B','C','D','E','F','G','H','I'};

Tree *root = newTreeNode('F');
insertTreeNode(root,'B');
insertTreeNode(root,'A');
insertTreeNode(root,'D');
insertTreeNode(root,'C');
insertTreeNode(root,'E');
insertTreeNode(root,'G');
insertTreeNode(root,'I');
insertTreeNode(root,'H');

/* is the tree BST? */
isBST(root);

/* size of tree */
cout << "size = " << treeSize(root) << endl;

/* max depth */
cout << "max depth = " << maxDepth(root) << endl;

/* min depth */
cout << "min depth = " << minDepth(root) << endl;

/* balanced tree? */
if(isBalanced(root))
cout << "This tree is balanced!\n";
else
cout << "This tree is not balanced!\n";

/* min value of the tree*/
if(root)
cout << "Min value = " << minTree(root)->data << endl;

/* max value of the tree*/
if(root)
cout << "Max value = " << maxTree(root)->data << endl;

ch = 'B';
found = lookUp(root,ch);
if(found) {
cout << "Min value of subtree " << ch << " as a root is "
<< minTree(found)->data << endl;
cout << "Max value of subtree " << ch << " as a root is "
<< maxTree(found)->data << endl;
}

ch = 'B';
found = lookUp(root,ch);
if(found) {
succ = succesorInOrder(found);
if(succ)
cout << "In Order Successor of " << ch << " is "
<< succesorInOrder(found)->data << endl;
else
cout << "In Order Successor of " << ch << " is None\n";
}

ch = 'E';
found = lookUp(root,ch);
if(found) {
succ = succesorInOrder(found);
if(succ)
cout << "In Order Successor of " << ch << " is "
<< succesorInOrder(found)->data << endl;
else
cout << "In Order Successor of " << ch << " is None\n";
}

ch = 'I';
found = lookUp(root,ch);
if(found) {
succ = succesorInOrder(found);
if(succ)
cout << "In Order Successor of " << ch << " is "
<< succesorInOrder(found)->data << endl;
else
cout << "In Order Successor of " << ch << " is None\n";
}

ch = 'B';
found = lookUp(root,ch);
if(found) {
pred = predecessorInOrder(found);
if(pred)
cout << "In Order Predecessor of " << ch << " is "
<< predecessorInOrder(found)->data << endl;
else
cout << "In Order Predecessor of " << ch << " is None\n";
}

ch = 'E';
found = lookUp(root,ch);
if(found) {
pred = predecessorInOrder(found);
if(pred)
cout << "In Order Predecessor of " << ch << " is "
<< predecessorInOrder(found)->data << endl;
else
cout << "In Order Predecessor of " << ch << " is None\n";
}

ch = 'I';
found = lookUp(root,ch);
if(found) {
pred = predecessorInOrder(found);
if(pred)
cout << "In Order Predecessor of " << ch << " is "
<< predecessorInOrder(found)->data << endl;
else
cout << "In Order Predecessor of " << ch << " is None\n";
}

/* Lowest Common Ancestor */
ch1 = 'A';
ch2 = 'C';
ancestor =
lowestCommonAncestor(root,
lookUp(root,ch1), lookUp(root,ch2));
if(ancestor)
cout << "The lowest common ancestor of " << ch1 << " and "
<< ch2 << " is " << ancestor->data << endl;

ch1 = 'E';
ch2 = 'H';
ancestor =
lowestCommonAncestor(root,
lookUp(root,ch1), lookUp(root,ch2));
if(ancestor)
cout << "The lowest common ancestor of " << ch1 << " and "
<< ch2 << " is " << ancestor->data << endl;

/* print tree in order */
cout << "increasing sort order\n";
printTreeInOrder(root);
cout << endl;

/* print tree in postorder*/
cout << "post order \n";
printTreePostOrder(root);
cout << endl;

/* print tree in preorder*/
cout << "pre order \n";
printTreePreOrder(root);
cout << endl;

/* lookUp */
ch = 'D';
found = lookUp(root,ch);
if(found)
cout << found->data << " is in the tree\n";
else
cout << ch << " is not in the tree\n";

/* lookUp */
ch = 'M';
found = lookUp(root,ch);
if(found)
cout << found->data << " is in the tree\n";
else
cout << ch << " is not in the tree\n";

/* printing all paths :
Given a binary tree, print out all of its root-to-leaf
paths, one per line. Uses a recursive helper to do the work. */
cout << "printing paths ..." << endl;
printAllPaths(root);

/* find n-th maximum node */
NthMax(root);


/* convert the tree into an array */
int treeSz = treeSize(root);
int *array = new int[treeSz];
TreeToArray(root,array);
cout << "New array: ";
for (int i = 0; i < treeSz; i++)
cout << (char)array[i] << ' ';
cout << endl;
delete [] array;

/* subtree */
Tree *root2 = newTreeNode('D');
insertTreeNode(root2,'C');
insertTreeNode(root2,'E');
cout << "1-2 subtree: " << isSubTree(root, root2) << endl;

Tree *root3 = newTreeNode('B');
insertTreeNode(root3,'A');
insertTreeNode(root3,'D');
insertTreeNode(root3,'C');
insertTreeNode(root3,'E');
cout << "1-3 subtree: " << isSubTree(root, root3) << endl;

Tree *root4 = newTreeNode('B');
insertTreeNode(root4,'D');
insertTreeNode(root4,'C');
insertTreeNode(root4,'E');
cout << "1-4 subtree: " << isSubTree(root, root4) << endl;

cout << "2-3 subtree: " << isSubTree(root2, root3) << endl;
cout << "3-2 subtree: " << isSubTree(root3, root2) << endl;

/* swap left and right */
mirror(root);

/* deleting a tree */
clear(root);

/* make a new tree with minimal depth */
Tree *newRoot = createMinimalBST(charArr,9);

/* Traversing level-order.
We visit every node on a level before going to a lower level.
This is also called Breadth-first traversal.*/
cout << "printing with Breadth-first traversal" << endl;
BreadthFirstTraversal(newRoot);

return 0;
}

Antrian dengan linklist


Contoh antrian dengan linklist
#include <stdio.h>
#include <stdlib.h>

struct node
{
int data;
node *next;
};
typedef struct node node_t;

node_t *head = NULL;

void push(int n)
{
node_t *newNode = (node_t *)malloc(sizeof(node_t));
newNode->data = n;
newNode->next = NULL;

if(head == NULL) {
head = newNode;
return;
}

node_t *cur = head;
while(cur) {
if(cur->next==NULL) {
cur->next = newNode;
return;
}
cur = cur->next;
}
}

void pop()
{
if(head==NULL) return;
node_t *tmp = head;
head = head->next;
free(tmp);
}

void display()
{
node_t *cur = head;
while(cur) {
printf("%3d",cur->data);
cur = cur->next;
}
printf("\n");
}

int main()
{
push(1);push(2);push(3);push(4);push(5);display();
pop();display();
pop();display();
pop();display();
pop();display();
pop();display();
return 0;
}

Senin, 14 November 2011

Empat Kata yang Membuat Wanita Berpikir Seks

Berita Indonesia - Membuat perempuan terangsang dan memikirkan soal seks bukan perkara mudah. Merayu seorang perempuan pun tidak harus dengan sebuah barang mewah, seikat bunga mawar atau makan malam romantis. Cara sederhana seperti rayuan yang dilontarkan melalaui kata-kata ternyata juga mampu membuat perempuan merasa tergoda, bahkan terangsang untuk memikirkan seks.

Bagaimana cara pria membisikkan kata-kata menggoda di telinga perempuan juga perlu suatu trik. Jika dibisikkan pada waktu yang tepat, akan dengan mudah membuat pasangan tergoda dan bergairah untuk melakukan adegan mesra.

Seperti dikutip laman Ask Dan & Jennifer, ada empat kata rayuan yang dijamin akan mampu menggoda perempuan dan merangsang pikirannya untuk memikirkan seks.

"Basah"

Perlu trik khusus mengucapkan kata ini. Jika Anda hanya membungkuk dan membisikkan pada perempuan kata "basah," pasangan perempuan Anda mungkin tidak akan langsung mengalami orgasme. Namun, jika Anda melakukan kontak mata yang kuat, sedikit menggoda, dan kemudian sedikit melakukan aksi meneteskan air minum, sambil mengatakan kata-kata menggoda, mungkin akan membuat pikirannya melayang dan membayangkan seks.

Ucapkan kata ini di saat yang tepat. Kata 'basah' adalah contoh termudah. Gunakan setiap kali dia meneteskan air dari gelas, membasahi bibir dengan air, atau saat ia selesai melakukan keramas. Dengan nada suara yang tepat, mungkin akan membuatnya merasa tergoda dan memahami maksud kata yang Anda ucapkan.

"Keras"

Jelas, pria dan perempuan pasti tahu apa maksud dari kata yang satu ini. Kata ini pun sering digunakan oleh para komedian untuk mengibaratkan tingkat ereksi seorang pria. Namun, kebanyakan pria mungkin tidak tahu, bahwa kata "keras" adalah cara cepat untuk membuat perempuan membayangkan seks.

"Makan/Mulut"

Semua hal yang berkaitan dengan makanan dan mulut bisa menjadi suatu kata yang begitu sensual untuk didengar bagi pasangan baik pria maupun perempuan. Sebagai contoh, ketika Anda makan makanan, coba katakan padanya,"Saya ingin melihat Anda memakannya,” atau katakan padanya,"Aku ingin menaruhnya ke dalam mulutmu”.

"Di dalam"

Ini mungkin rayuan yang paling mudah dilontarkan. Setiap pasangan juga bisa mengungkapkan kapan pun dan di mana pun saat sedang berdua. Jika Anda pergi ke suatu tempat bersama-sama, mulailah berkata "Sayang, aku tidak sabar untuk masuk ke dalam, denganmu,” atau jika dia mengatakan sesuatu yang membuat Anda bahagia, katakan padanya, "Kamu membuat saya begitu bahagia. Aku merasa hangat di dalam saat aku bersamamu”.

Jumat, 11 November 2011

Link list menggunakan class

#include <iostream>
#include <string>
using namespace std;

class list
{
public:
struct node {
int id;
string name;
struct node *next;
} *head, *tail, *ptr;

list():head(NULL),tail(NULL){} // constructor
~list(); // destructor

struct list::node* searchName(struct list::node*, string);
struct list::node* searchId(struct list::node*, int);
struct list::node* initNode(string, int);

void reverse();
void addNode( struct list::node*);
void insertNode( struct list::node*);
void deleteNode( struct list::node*);
void deleteList( struct list::node*);
void displayList( struct list::node*)const ;
void displayNode( struct list::node*) const;
};

list::~list() {
node *current,*temp;
current = head;
temp = head;
while(current != NULL) {
current = current->next;
delete temp;
temp = current;
}
}

struct list::node* list::initNode(string s, int i) {
struct node *ptr = new node;

// error? then just return
if( ptr == NULL )
return static_cast<struct node *>(NULL);
// assign it
// then return pointer to ne node
else {
ptr->name = s ;
ptr->id = i;
return ptr;
}
}

// adding to the end of list
void list::addNode( struct node *newNode ) {
// if there is no node, put it to head
if( head == NULL ) {
head = newNode;
tail = newNode;
}

// link in the new_node to the tail of the list
// then mark the next field as the end of the list
// adjust tail to point to the last node

tail->next = newNode;
newNode->next = NULL;
tail = newNode;
}

void list::insertNode( struct node *newnode ) {
struct node *temp, *prev;

if( head == NULL ) { // if an empty list,
head = newnode; // set 'head' to it
tail = newnode;
head->next = NULL; // set end of list to NULL
return;
}

temp = head; // start at beginning of list
// while currentname < newname
while( temp->name < newnode->name) { // to be inserted then
temp = temp->next; // goto the next node in list
if( temp == NULL ) // don't go past end of list
break;
}
// set previous node before we insert
// first check to see if it's inserting
if( temp == head ) { // before the first node
newnode->next = head; // link next field to original list
head = newnode; // head adjusted to new node
}
else { // it's not the first node
prev = head; // start of the list,
while( prev->next != temp ) {
prev = prev->next; // will cycle to node before temp
}
prev->next = newnode; // insert node between prev and next
newnode->next = temp;
if( tail == prev ) // if the new node is inserted at the
tail = newnode; // end of the list the adjust 'end'
}
}

struct list::node* list::searchName(struct node* ptr, string name) {
while( name != ptr->name ) {
ptr = ptr->next;
if( ptr == NULL )
break;
}
return ptr;
}

struct list::node* list::searchId(struct node* ptr, int id) {
while( id != ptr->id ) {
ptr = ptr->next;
if( ptr == NULL )
break;
}
return ptr;
}

void list::reverse() {
// we need at least two nodes for the reverse to have any effect
if(head == NULL || head->next == NULL) return;

// Starting 2nd list as 'me' and 'head' is now 'me->next'
// and 'head->next' is pointing to NULL
// So, the 3rd list is now 'child' of 'me'
node *parent = head;
node *me = head->next;
node *child = me->next;

// convert head to tail
head->next = NULL;

// reverse pointer direction
me->next = head;

while(child != NULL){
me->next = parent;
parent = me;
me = child;
child = child->next;
}
// when me reached the tail
// me becomes head
head = me;
// the head is now pointing to the 2nd last node
head->next = parent;
}


void list::deleteNode( struct list::node *ptr )
{
struct node *temp, *prev;
temp = ptr; // node to be deleted
prev = head; // start of the list, will cycle to node before temp

if( temp == prev ) { // deleting first node?
head = head->next; // moves head to next node
if( tail == temp ) // is it end, only one node?
tail = tail->next; // adjust end as well
delete temp ; // free up space
}
else { // if not the first node, then
while( prev->next != temp ) { // move prev to the node before
prev = prev->next; // the one to be deleted
}
prev->next = temp->next; // link previous node to next
if( tail == temp ) // if this was the end node,
tail = prev; // then reset the end pointer
delete temp; // free up space
}
}

void list::deleteList( struct node *ptr )
{
struct node *temp;

if( head == NULL ) return; // don't try to delete an empty list

if( ptr == head ) { // if we are deleting the entire list
head = NULL; // then reset head and
tail = NULL; // end to empty
}
else {
temp = head; // if it's not the entire list, readjust end
while( temp->next != ptr ) // locate previous node to ptr
temp = temp->next;
tail = temp; // set end to node before ptr
}

while( ptr != NULL ) { // whilst there are still nodes to delete
temp = ptr->next; // record address of next node
delete ptr; // free this node
ptr = temp; // point to next node to be deleted
}
}

void list::displayNode( struct list::node *ptr ) const
{
cout << ptr->id << ": " << ptr->name << endl;
}

void list::displayList( struct list::node *ptr ) const
{
if(!ptr) cout << "Nothing to display" << endl;
while(ptr) {
displayNode(ptr);
ptr = ptr->next;
}
}

int main()
{
int id;
string name;
list myList;
list::node* ptr;

// add
ptr = myList.initNode( "s1", 1 );
myList.addNode(ptr);
ptr = myList.initNode( "s2", 2 );
myList.addNode(ptr);
ptr = myList.initNode( "s3", 3 );
myList.addNode(ptr);
ptr = myList.initNode( "s4", 4 );
myList.addNode(ptr);
ptr = myList.initNode( "s5", 5 );
myList.addNode(ptr);
myList.displayList(myList.head);

// delete
name = "s2";
ptr = myList.searchName( myList.head, name );
if( ptr == NULL ) {
cout << "\nName: " << name << " not found" << endl;
}
else {
cout << "\nDeleting a node ... ";
myList.displayNode(ptr);
myList.deleteNode( ptr );
}
myList.displayList(myList.head);

// insert
name = "s2";
id = 2;
ptr = myList.initNode( name, id );
myList.insertNode( ptr );
cout << "\nInserting a node ... ";
myList.displayNode(ptr);
myList.displayList(myList.head);

// reverse
cout << "\nReversing the list ... \n";
myList.reverse();
myList.displayList(myList.head);

// delete
cout << "\nIn the end, deleting the list ... \n";
myList.deleteList(myList.head);
myList.displayList(myList.head);
return 0;
}

Kamis, 10 November 2011

Link list circular (loop)


Didalam kode ini berisi
1. menambahkan node
2. fungsi pengembalian pada list
3. membuat list circular (loop)
4. rekursif

#include <iostream>
using namespace std;

struct Node
{
int data;
Node * next;
};

Node *root = 0;

void addNode(int n)
{
if(root==0) {
root = new Node;
root->data = n;
root->next = 0;
return;
}
Node *cur = root;
while(cur) {
if(cur->next == 0) {
Node *ptr = new Node;
ptr -> data = n;
ptr -> next = 0;
cur -> next = ptr;
return;
}
cur = cur->next;
}
}

void makeCircular()
{
if(!root || !root->next) return;
Node *cur = root;
while(cur) {
if(cur->next == 0) {
cur->next = root;
return;
}
cur = cur->next;
}
}

int sizeOfList()
{
Node *cur = root;
int size = 0;
while(cur) {
size++;
if(cur->next == 0) {
return size;
}
cur = cur->next;
}
return size;
}

bool detectCircular()
{
// Assuming the list may not be circular

if(!root || !root->next) return false;
Node *ptr1 = root;
Node *ptr2 = root;

while(ptr1 && ptr2) {
ptr1 = ptr1->next;
ptr2 = ptr2->next;
if(ptr2) {
ptr2 = ptr2->next;
if(!ptr2) return false;
}
else {
return false;
}
cout << ptr1->data << "," << ptr2->data << endl;
if(ptr1==ptr2) {
return true;
}
}
return false;
}

void printRecursive(Node *ptr)
{
if(!ptr) {
cout << endl;
return;
}
cout << ptr->data << " ";
printRecursive(ptr->next);
}

int main(int argc, char **argv)
{
addNode(10);addNode(20);addNode(30);addNode(40);addNode(50);
addNode(60);addNode(70);addNode(80);addNode(90);addNode(100);

printRecursive(root);

cout << "size of list = " << sizeOfList() << endl;

makeCircular();

if(detectCircular()) cout <<"Circular\n";
else cout << "Normal\n";

}
Output from the run:
10 20 30 40 50 60 70 80 90 100
size of list = 10
20,30
30,50
40,70
50,90
60,10
70,30
80,50
90,70
100,90
10,10
Circular


Example 5B - Detecting Circular (Loop) Linked List (Generic Class with Template)
#include <iostream>
#include <string>

using namespace std;

template <class T>
class LinkedList
{
private:
struct node
{
T data;
node * next;
} *head;

public:
LinkedList();
~LinkedList();
void add(T d);
void remove(T d);
void clear();
void makeCircular();
bool isCircular();
void display(const char* s);
};

template <class T>
LinkedList<T>::LinkedList()
{
head = NULL;
}

template <class T>
LinkedList<T>::~LinkedList()
{
node *p, *q;
p = head;
if(p == NULL) return;
while(p) {
q = p->next;
delete p;
p = q;
}
}

template <class T>
void LinkedList<T>::add(T d)
{
node *p, *q;
if(head == NULL) {
head = new node;
head->data = d;
head->next = NULL;
return;
}
p = head;
while(p->next != NULL)
p = p->next;
q = new node;
q->data = d;
q->next = NULL;
p->next = q;
}

template <class T>
void LinkedList<T>::remove(T d)
{
node *p, *q;
if(head == NULL) return;
p = head;
while(p) {
if(p->data == d) {
q->next = p->next;
delete p;
return;
}
q = p;
p = p->next;
}
}

template <class T>
void LinkedList<T>::clear()
{
node *p, *q;
if(head == NULL) return;
p = head;
while(p) {
q = p->next;
delete p;
if(q != head) {
head = NULL;
return;
}
p = q;
}
}

template <class T>
void LinkedList<T>::makeCircular()
{
node *p;
if(head == NULL || head->next == NULL) return;
p = head;
while(p) {
if(p->next == NULL) {
p->next = head;
return;
}
p = p->next;
}
}

template <class T>
bool LinkedList<T>::isCircular()
{
node *p, *pp;
if(head == NULL || head->next == NULL) return false;
p = head;
pp = head;
while(pp) {
p = p->next;
if(pp->next == NULL) return false;
pp = (pp->next)->next;
if(p == pp) return true;
}
return false;
}

template <class T>
void LinkedList<T>::display(const char* s)
{
node *p;
if(head == NULL) return;
p = head;
while(p) {
if(s == "string")
cout << p->data << endl;
else
cout << p->data << ' ';
p = p->next;
if(p != NULL) {
if(p == head) return;
}
}
if(s == "integer") cout << endl;
}

int main()
{
LinkedList<string> sList;
sList.add("Wolfgang Amadeus Mozart");
sList.add("Franz Peter Schubert");
sList.add("Pyotr Ilyich Tchaikovsky");
sList.add("Clude-Achille Debussy");
sList.add("Camille Saint-Saens");
sList.display("string");
sList.clear();

LinkedList<int> iList;
iList.add(40);
iList.add(50);
iList.add(60);
iList.add(70);
iList.add(80);
iList.add(90);
iList.add(100);
iList.add(10);
iList.add(20);
iList.add(30);
iList.display("integer");

/* link last element to the first */
iList.makeCircular();

if(iList.isCircular()) cout <<"This is circular list\n";
iList.display("integer");

iList.clear();
cout << "\ndisplay after clear()\n";
iList.display("integer");

return 0;
}

Rabu, 09 November 2011

Stack menggunakan linklist

Contoh program stack ini menggunakan linklist dan data terstruktur


#include <iostream<

using namespace std;

typedef struct Element
{
void *data;
struct Element *next;
} Element;

bool push(Element **top, void *data)
{
Element *elem = new Element;
if(!elem) return false;

elem->data = data;
elem->next = *top;
*top = elem;
return true;
}

bool createStack(Element **top)
{
*top = NULL;
return true;
}

bool pop(Element **top, void **data )
{
Element *elem;
if( !(elem = *top) ) return false;

*data = elem->data;
*top = elem->next;
delete elem;
return true;
}

bool deleteStack(Element **top)
{
Element *elem;
while(*top) {
elem = (*top)->next;
delete *top;
*top = elem;
}
return true;

}

void printStack(Element *top)
{
if(top==NULL) {
cout << "Empty!" << endl;
}
Element *cur = top;
while(cur) {
cout << *(static_cast<int *>(cur->data)) << " ";
cur = cur->next;
}
cout << endl << endl;
}

int main()
{
Element *head;
createStack(&head);
int n1 = 10, n2 = 20, n3 = 30, n4 = 40, n5 = 50;
push(&head, &n1);
push(&head, &n2);
push(&head, &n3);
push(&head, &n4);
push(&head, &n5);

printStack(head);

void * n;
pop(&head, &n);
cout << "popped " << *(static_cast<int*>(n)) << endl;
pop(&head, &n);
cout << "popped " << *(static_cast<int*>(n)) << endl;
cout << endl;

printStack(head);

cout << "deleting stack..." << endl;
deleteStack(&head);
printStack(head);
}

Link list menggunakan template

ini contoh linklist circular menggunakan template
#include <iostream>
#include <string>

using namespace std;

template <class T>
class LinkedList
{
private:
struct node
{
T data;
node * next;
} *head;

public:
LinkedList();
~LinkedList();
void add(T d);
void remove(T d);
void clear();
void makeCircular();
bool isCircular();
void display(const char* s);
};

template <class T>
LinkedList<T>::LinkedList()
{
head = NULL;
}

template <class T>
LinkedList<T>::~LinkedList()
{
node *p, *q;
p = head;
if(p == NULL) return;
while(p) {
q = p->next;
delete p;
p = q;
}
}

template <class T>
void LinkedList<T>::add(T d)
{
node *p, *q;
if(head == NULL) {
head = new node;
head->data = d;
head->next = NULL;
return;
}
p = head;
while(p->next != NULL)
p = p->next;
q = new node;
q->data = d;
q->next = NULL;
p->next = q;
}

template <class T>
void LinkedList<T>::remove(T d)
{
node *p, *q;
if(head == NULL) return;
p = head;
while(p) {
if(p->data == d) {
q->next = p->next;
delete p;
return;
}
q = p;
p = p->next;
}
}

template <class T>
void LinkedList<T>::clear()
{
node *p, *q;
if(head == NULL) return;
p = head;
while(p) {
q = p->next;
delete p;
if(q != head) {
head = NULL;
return;
}
p = q;
}
}

template <class T>
void LinkedList<T>::makeCircular()
{
node *p;
if(head == NULL || head->next == NULL) return;
p = head;
while(p) {
if(p->next == NULL) {
p->next = head;
return;
}
p = p->next;
}
}

template <class T>
bool LinkedList<T>::isCircular()
{
node *p, *pp;
if(head == NULL || head->next == NULL) return false;
p = head;
pp = head;
while(pp) {
p = p->next;
if(pp->next == NULL) return false;
pp = (pp->next)->next;
if(p == pp) return true;
}
return false;
}

template <class T>
void LinkedList<T>::display(const char* s)
{
node *p;
if(head == NULL) return;
p = head;
while(p) {
if(s == "string")
cout << p->data << endl;
else
cout << p->data << ' ';
p = p->next;
if(p != NULL) {
if(p == head) return;
}
}
if(s == "integer") cout << endl;
}

int main()
{
LinkedList<string> sList;
sList.add("Wolfgang Amadeus Mozart");
sList.add("Franz Peter Schubert");
sList.add("Pyotr Ilyich Tchaikovsky");
sList.add("Clude-Achille Debussy");
sList.add("Camille Saint-Saens");
sList.display("string");
sList.clear();

LinkedList<int> iList;
iList.add(40);
iList.add(50);
iList.add(60);
iList.add(70);
iList.add(80);
iList.add(90);
iList.add(100);
iList.add(10);
iList.add(20);
iList.add(30);
iList.display("integer");

/* link last element to the first */
iList.makeCircular();

if(iList.isCircular()) cout <<"This is circular list\n";
iList.display("integer");

iList.clear();
cout << "\ndisplay after clear()\n";
iList.display("integer");

return 0;
}

Contoh Link list

Ini adalah contoh linklist
silahkan dicoba

#include <iostream>

using namespace std;

struct Node {
int data;
Node* next;
};

// only for the 1st Node
void initNode(struct Node *head,int n){
head->data = n;
head->next =NULL;
}

// apending
void addNode(struct Node *head, int n) {
Node *newNode = new Node;
newNode->data = n;
newNode->next = NULL;

Node *cur = head;
while(cur) {
if(cur->next == NULL) {
cur->next = newNode;
return;
}
cur = cur->next;
}
}

void insertFront(struct Node **head, int n) {
Node *newNode = new Node;
newNode->data = n;
newNode->next = *head;
*head = newNode;
}

struct Node *searchNode(struct Node *head, int n) {
Node *cur = head;
while(cur) {
if(cur->data == n) return cur;
cur = cur->next;
}
cout << "No Node " << n << " in list.\n";
}

bool deleteNode(struct Node **head, Node *ptrDel) {
Node *cur = *head;
if(ptrDel == *head) {
*head = cur->next;
delete ptrDel;
return true;
}

while(cur) {
if(cur->next == ptrDel) {
cur->next = ptrDel->next;
delete ptrDel;
return true;
}
cur = cur->next;
}
return false;
}

/* reverse the list */
struct Node* reverse(struct Node** List)
{
Node *parent = *List;
Node *me = parent->next;
Node *child = me->next;

/* make parent as tail */
parent->next = NULL;
while(child) {
me->next = parent;
parent = me;
me = child;
child = child->next;
}
me->next = parent;
*List = me;
return *List;
}

/* Creating a copy of a linked list */
void copyLinkedList(struct Node *node, struct Node **pNew)
{
if(node != NULL) {
*pNew = new Node;
(*pNew)->data = node->data;
(*pNew)->next = NULL;
copyLinkedList(node->next, &((*pNew)->next));
}
}

/* Compare two linked list */
/* return value: same(1), different(0) */
int compareLinkedList(struct Node *node1, struct Node *node2)
{
static int flag;

/* both lists are NULL */
if(node1 == NULL && node2 == NULL) {
flag = 1;
}
else {
if(node1 == NULL || node2 == NULL)
flag = 0;
else if(node1->data != node2->data)
flag = 0;
else
compareLinkedList(node1->next, node2->next);
}

return flag;
}

void deleteLinkedList(struct Node **node)
{
struct Node *tmpNode;
while(*node) {
tmpNode = *node;
*node = tmpNode->next;
delete tmpNode;
}
}

void display(struct Node *head) {
Node *list = head;
while(list) {
cout << list->data << " ";
list = list->next;
}
cout << endl;
cout << endl;
}

int main()
{
struct Node *newHead;
struct Node *head = new Node;

initNode(head,10);
display(head);

addNode(head,20);
display(head);

addNode(head,30);
display(head);

addNode(head,35);
display(head);

addNode(head,40);
display(head);

insertFront(&head,5);
display(head);

int numDel = 5;
Node *ptrDelete = searchNode(head,numDel);
if(deleteNode(&head,ptrDelete))
cout << "Node "<< numDel << " deleted!\n";
display(head);

cout << "The list is reversed\n";
reverse(&head);
display(head);

cout << "The list is copied\n";
copyLinkedList(head,&newHead);
display(newHead);

cout << "Comparing the two lists...\n";
cout << "Are the two lists same?\n";
if(compareLinkedList(head,newHead))
cout << "Yes, they are same!\n";
else
cout << "No, they are different!\n";
cout << endl;

numDel = 35;
ptrDelete = searchNode(newHead,numDel);
if(deleteNode(&newHead,ptrDelete)) {
cout << "Node "<< numDel << " deleted!\n";
cout << "The new list after the delete is\n";
display(newHead);
}
cout << "Comparing the two lists again...\n";
cout << "Are the two lists same?\n";
if(compareLinkedList(head,newHead))
cout << "Yes, they are same!\n";
else
cout << "No, they are different!\n";

cout << endl;
cout << "Deleting the copied list\n";
deleteLinkedList(&newHead);
display(newHead);
return 0;
}