Monday, 17 November 2014

                           Graph - Adjacency List

#include<vector>

#include<iostream>


class Graph{


public:

     //n is the number of vertices in graph

     Graph(const int n): numberOfVertices(numerOfVertices),numberofEdges(0),adjList(n)

     {

         

     }

     //# of vertices

     const int Vertices()

     {

         return numberOfVertices;

     }

     //# of Edges

     const int Edges()

     {

          return numberofEdges;

     }

     void addEdge(int v, int w)

     {

          adjList[v].push_back(w);

          adjList[w].push_back(v);

          ++numberofEdges;

     }


     void  adjVertices(int v)

     {

        std::cout<<"Adjacent vertices of"<< v <<std::endl;

        for(auto &x : adjList[v])

           std::cout<< x << std::endl;

     }


private:

    int numberOfVertices;

    int numberofEdges;

    std::vector< std::vector<int> > adjList;

};


int main()

{

     Graph G(10);

     G.addEdge(3, 4);

     G.addEdge(0, 2);

     G.addEdge(0, 4);

     G.addEdge(0, 9);

     G.adjVertices(0);

     G.adjVertices(4);

}

Sunday, 19 October 2014

Write String reverse

#include<stdio.h>
char * strrev(char* str)
{
     int length=0;
     char* str1=str;

     while(*str++)
        ++length;

     str=str1;
     char  temp;

     for ( int i=0; i< length/2; ++i)
     {
           temp= *(str +i);
           *(str +i) = *(str+length -1-i);
           *(str+length -1-i)= temp;
     }

     return str1;
}
int main()
{
    char str[]="Hello World!";
    strrev(str);
    printf("Reversed str:%s", str);

    return 0;

}

Write String copy operation.

#include<stdio.h>

char* mystrcpy(char * dest, char* source )
{
   char* dest1=dest;

   while(*dest++ = *source++)
   {
   }
   return dest1;

}
int main()
{

    char str2[30];
    char str1[]="Hello World!";
    char* str3=mystrcpy(str2,str1);
    printf("Str2 : %s\n", str2);
    printf("Str3 : %s", str3);
    return 0;
}