Tech Guide Blog

Tech Guide Programming Tutorial Tips Tricks

Archive for the ‘Tutorial’ Category

Linear Single Linked List C++ part II

Posted by Admin On April - 15 - 2009

This part of Linear Single Linked List will tell you how to delete a node at any index. It’s simple like adding a data, you just have to change the node pointer to other that next to the node that you want to delete. If you want to delete the most front data, you have to set the head onto the next node and delete the first node. Looks like front, when we want to delete the last node, we have to set the 2nd node from the last to tail and delete the last data/ node.

Delete any index in Single Linked List

Delete any index in Single Linked List

Delete first data on Single Linked List

Delete first data on Single Linked List

Delete the last index of Single Linked List

Delete the last index of Single Linked List

The code is quite simple rather than add code, I think. Human kind is rather destroying than creating and managing these days.

void DeleteLastIndex()
{
node *temp;
temp=head;
while(temp->nget()!=tail)
{
temp=temp->nget();
}
delete tail;
tail = temp;
tail->nset(NULL);
}

void DeleteAnyIndex(int index)
{
node *temp,*dnew;
temp=head;
dnew=head;
int i=0;
for(i=0;i<index;i++)
{
temp=temp->nget();
}
for(i=0;i<x+1;i++)
{
dnew=dnew->nget();
}
temp->nset(dnew->nget());
delete dnew;
}

void DeleteFront()
{
node *temp;
temp=head;
head=head->nget();
delete temp;
}

I think this code should works fine…. I think, LoL.

Popularity: 53% [?]

Linear Single Linked List C++

Posted by Admin On March - 26 - 2009

Hey, back to programming again in data structure. It’s now about Linked List, a linear single linked list it’s about to be explained in this post. We can imagine this like a chain, every data has a link to another data. Single Linked List is different from array. In array, we can only insert a new data to the last index after the last data. We can not insert at any place we want. So, the linked list was made.

linear-single-link-list

The Node

At linked list, we add a header, we called it node. This node is used for data to be linked to another data. It’s like each one person has one another person’s address. So, this is the advantage to use linked list instead of array. If a new data want to be placed between another data, we just have to change the address/ node of the data.

linear-single-link-list-add

Insert data

Feel confused? Let’s get to the code. I will make a simple linear single linked list that can insert a data at any index.

//====START====//

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <windows.h>

class node
{
private:
 int data;
 node * next;
public:
 node()
 {
  next=NULL;
 }
  int get()
 {
  return data;
 }
 void set(int x)
 {
  data=x;
 }
 node * nget()
 {
  return (next);
 }
 void nset(node * nextnode)
 {
  next=nextnode;
 }
};

class Link
{
private:
 node * head, * tail;
public:
 Link()
 {
  head=NULL;
  tail=NULL;
 }
 void add(int data)
 {
  node * baru;
  baru=new node;
  baru->set(data);
  if(!head)
  {
   head=baru;
   tail=head;
  }
  else
  {
   tail->nset(baru);
   tail=baru;
  }
 }
 void view()
 {
  node * temp;
  temp=head;
  if(temp)
  {
   while(temp)
   {
    printf("%d",temp->get());
    temp=temp->nget();
   }
  }
 }
 void addmid(int index,int data)
 {
  int i=0;
  node *temp,*ndata;
  temp=head;
  ndata=new node;
  ndata->set(data);
  while(i<index)
  {
   temp=temp->nget();
   i++;
  }
  ndata->nset(temp->nget());
  temp->nset(ndata);
 }

};

//====END====//

It’s done. You can start to implement this code in your main cpp.

Popularity: 33% [?]

Queue C++ Data Structure Code

Posted by Admin On February - 15 - 2009

Another data structures type is queue. Adding data is the same as stack, it’s called enqueue. The different between stack is queue use “first in first out”. The first data will be kicked out first when you dequeue it (getting data from queue). There are 2 pointers we can use in queue. Head is pointer that point the first data and tail to point the last data. This picture below may help you to understand.

linear_queue

Linear Queue

There are 2 types of queue, linear and circular. A circular queue has a shape like donut, so we can say the queue is connected. The different is at head position, a linear queue has a static head position, and a circular has a dynamic head position every time you do dequeue.

Circular Queue

Circular Queue

This time, I will only tell you how to make a linear queue class in header :D, it looks like stack application at previous post, so it’s unnecessary to write the main code.

//============== start of code ==============//
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define MAX 255

class lqueue
{
private:
	int data[MAX];
	int tail; // linear queue has a static head, assume head = 0
public:
	lqueue()
	{
		tail = 0;
	}
	void enqueue(int value)
	{
		if (!full())
		{
			data[tail] = value;
			tail++;
		}
	}
	int dequeue()
	{
		if (!empty())
		{
			int temp;
			temp = data[head];
			for (int i = 0; i < tail; i++)
			{
				data[i] = data[i+1];
			}
			tail--;
			return temp;
		}
	}
	bool full()
	{
		if (tail == MAX)
			return 1;
		else
			return 0;
	}
	bool empty()
	{
		if (tail == 0)
			return 1;
		else
			return 0;
	}
	void view()
	{
		for (int i = 0; i < tail; i++)
			printf("%d ",data[i]);
		getch();
	}
};
//=============== end of code ===============//

It’s done. I think it should work fine :))

Popularity: 37% [?]