data structure programs

Data Structure Programs in C

Data Structure is a way of collecting and organising data in such a way that we can perform operations on these data in an effective way. Here I’m giving all the possible data structure program using C programming language:

1. DATA STRUCTURE PROGRAM TO SEARCH AN ITEM FROM AN ARRAY USING BINARY SEARCH:
#include<stdio.h>

#include<conio.h>

int main()

{

    int a[100],n,start,end,mid,i,s,j,swap;

    printf("Enter the Number of Terms: ");

    scanf("%d",&n);

    printf("Enter the Numbers: \n");

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

     for(i=0;i<n-1;i++)

    {

                      for(j=0;j<n-1-i;j++)

                      {                                                                                                               

                                          if(a[j]>a[j+1])

                                          {

                                                         swap=a[j];

                                                         a[j]=a[j+1];

                                                         a[j+1]=swap;

                                          }

                      }

    }

    printf("The Sorted List is: \n");

    for(i=0;i<n;i++)

    printf("%d\n",a[i]);

    printf("Enter the Number you want to Search: ");

    scanf("%d",&s);

    start=0;

    end=n-1;

    mid=(start+end)/2;

    while (start<=end)

    {

             if(a[mid]<s)

             start=mid+1;

             else if(a[mid]==s)

             {

             printf("Search Successful at position %d", mid+1);

             break;

             }

             else

             end=mid-1;

             mid=(start+end)/2;

    }

    if(start>end)

    printf("Search Unsuccessful");

    getch();

   }

Output:

data structure program
2. DATA STRUCTURE PROGRAM TO SORT AN ARRAY (BUBBLE SORT):
#include<stdio.h>

#include<conio.h>

int main()

{

    int a[100],n,i,j,swap;

    printf("Enter the Number of Terms: ");

    scanf("%d",&n);

    for(i=0;i<n;i++)

    {

                    printf("Enter the Number of position %d: ",i+1);

                    scanf("%d",&a[i]);

    }

    for(i=0;i<n-1;i++)

    {

                      for(j=0;j<n-1-i;j++)

                      {

                                          if(a[j]>a[j+1])

                                          {

                                                         swap=a[j];

                                                         a[j]=a[j+1];

                                                         a[j+1]=swap;

                                          }

                      }

    }

    printf("The Sorted List is: \n");

    for(i=0;i<n;i++)

    printf("%d\n",a[i]);

    getch();

    return 0;

}
Output:
data structure program
3. DATA STRUCTURE PROGRAM TO SORT AN ARRAY (INSERTION SORT):
#include<stdio.h>

#include<conio.h>

int main()

{

    int a[100],n,i,j,key;

    printf("Enter the number of terms: ");

    scanf("%d",&n);

    printf("Enter the elements: \n");

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

    for(j=1;j<=n-1;j++)

    {

                       key=a[j];

                       i=j-1;

                       while(i>=0 && a[i]>key)

                       {

                                  a[i+1]=a[i];

                                  i=i-1;

                       }

                       a[i+1]=key;

    }

    printf("The sorted list is:\n");

    for(i=0;i<n;i++)

    printf("%d\n",a[i]);

    getch();

    return 0;

}
Output:
data structure program
4. DATA STRUCTURE PROGRAM TO SORT AN ARRAY (SELECTION SORT):
#include<stdio.h>

#include<conio.h>

int main()

{

    int a[100],n,i,j,small,swap;

    printf("Enter the number of terms: ");

    scanf("%d",&n);

    printf("Enter the numbers: \n");

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

    for(j=0;j<n-1;j++)

    {

                      small=j;

                      for(i=j+1;i<n;i++)

                      {

                                        if(a[i]<a[small])

                                        small=i;

                      }

                      swap=a[j];

                      a[j]=a[small];

                      a[small]=swap;

    }

    printf("The sorted list is:\n");

    for(i=0;i<n;i++)

    printf("%d\n",a[i]);

    getch();

    return 0;

}       
5. ARRAY OPERATION (TRAVERSING AN ARRAY):
#include<stdio.h>

#include<conio.h>

int main()

{

    int a[20],i,n;

    printf("Enter the number of terms: ");

    scanf("%d",&n);

    printf("Enter the elements of the array:\n");

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

    printf("Your entered elements are:\n");

    for(i=0;i<n;i++)

    printf("%d",a[i]);

    getch();

}
6. ARRAY OPERATION (INSERT AN ELEMENT IN THE ARRAY):
#include<stdio.h>

#include<conio.h>

int main()

{

    int a[10],k,item,n,i=0,j;

    printf("Enter the number of elements of the array: ");

    scanf("%d",&n);

    j=n;

    printf("Enter the elements of the array: \n");

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

    printf("Enter the number that you want to insert: ");

    scanf("%d",&item);

    printf("Enter the position you want to insert the number: ");

    scanf("%d",&k);

    k--;

    n=n+1;

     while(j>=k)

                    {

                                    a[j+1]=a[j];

                                    j=j-1;

                    }

                    a[k]=item;

                    printf("The array after insert the element is:\n");

                   for(i=0;i<n;i++)

                   printf("%d\t",a[i]);

    getch();

    return 0;

}
7. ARRAY OPERATION (DELETE AN ELEMENT FROM THE ARRAY):
#include<stdio.h>

#include<conio.h>

int main()

{

    int a[10],k,n,i,j,item;

    printf("Enter the number of elements of the array: ");

    scanf("%d",&n);

    printf("Enter the elements of the array: \n");

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

    printf("Enter the position you want to delete the number: ");

    scanf("%d",&k);

    item=a[k];

    j=k;

    n=n-1;

    while(j<k)

    {

              a[j]=a[j+1];

              j=j+1;

    }

    for(i=0;i<n;i++)

    printf("%d\t",a[i]);

    getch();

    return 0;

}    
9. Program for String operations without library functions:
#include <stdio.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
#include<stdlib.h>
/*function prototypes*/
int length(char a[]);
void reverse(char a[]);
int palindrome(char a[]);
void copy(char a[],char b[]);
int compare(char a[],char b[]);
void concat(char a[],char b[]);
void search(char a[],char b[]);
void count(char a[]);

int main()
  { char a[100],b[100];
    int result,op;
    void clrscr();
    do
      {
                 printf("\n1)length of a string");
                 printf("\n2)Reverse the Given String");
                 printf("\n3)Check for palindrome");
                 printf("\n4)Copy");
                 printf("\n5)String Comparison");
                 printf("\n6)String Concatenation");
                 printf("\n7)String Searching");
                 printf("\n8)Counting of Words,Characters & Special Characters");
                 printf("\n9)Quit");
                 printf("\n\nEnter Your Choice:");
                 scanf("%d",&op);

                 switch(op)

                  { case 1: printf("\n Enter a String:");

                                    scanf("%s",&a);

                                    result=length(a);

                                    printf("\n Length of %s=%d",a,result);

                                    printf("\n\n press a Character !!!!!!");

                                    getch();

                                    break;

 

                    case 2: printf("\n Enter a String:");

                                    scanf("%s",&a);

                                    reverse(a);

                                    printf("\n Result=%s",a);

                                    printf("\n\n press a Character !!!!!!");

                                    getch();

                                    break;

                     case 3: printf("\n Enter a String:");

                                    scanf("%s",&a);

                                    result=palindrome(a);

                                    if(result==0)

                                      printf("\nNot a palindrome");

                                    else

                                      printf("\nA palindrome");

                                     printf("\n\n press a Character !!!!!!");

                                    getch();

                                    break;

                    case 4: printf("\n Enter a String:");

                                    scanf("%s",&a);

                                    copy(b,a);

                                    printf("\nResult=%s",b);

                                    printf("\n\n press a Character !!!!!!");

                                    getch();

                                    break;

                    case 5: printf("\n Enter 1st string:");

                                    scanf("%s",&a);

                                    printf("\n Enter 2nd string:");

                                    gets(b);

                                    result=compare(a,b);

                                    if(result==0)

                                      printf("\nboth are same");

                                    else

                                       if(result>0)

                                                 printf("\n1st>2nd");

                                                   else

                                                     printf("\n1st<2nd");

                                    printf("\n\n press a Character !!!!!!");

                                    getch();break;

                    case 6: printf("\n Enter 1st string:");

                                    scanf("%s",&a);

                                    printf("\n Enter 2nd string:");

                                    gets(b);

                                    concat(a,b);

                                    printf("\nresult=%s",a);

                                    printf("\n\n press a Character !!!!!!");

                                    getch();break;

                    case 7: printf("\n Enter 1st string:");

                                    scanf("%s",&a);

                                    printf("\n Enter 2nd string:");

                                    scanf("%s",&b);

                                    search(a,b);

                                    printf("\n\n press a Character !!!!!!");

                                    getch();break;

                    case 8: printf("\n Enter a string:");

                                    scanf("%s",&a);

                                    count(a);

                                    printf("\n\n press a Character !!!!!!");

                                    getch();break;

                    default : printf("\n A wrong Choice:");break;

                  }

       }while(op!=9);

  }

 

int length(char a[])

  { int i=0;

    while(a[i] !='\0')

      i++;

    return(i);

  }

void reverse(char a[])

   { int i,j;

     char temp;

      i=j=0;

      while(a[j]!='\0')

       j++;

      j--;

      while(i<j)

       { temp=a[i]; a[i]=a[j];a[j]=temp;

                 i++;j--;

       }

     }

int palindrome(char a[])

  { int i,j;

     i=j=0;

      while(a[j]!='\0')

       j++;

      j--;

      while(i<j)

       { if(a[i]!=a[j])

                  return(0);

                 i++;j--;

       }

      return(1);

     }

  void copy(char b[],char a[])

     { int i=0;

       while(a[i]!='\0')

                { b[i]=a[i];

                  i++;

                }

       b[i]='\0';

     }

 

  int compare(char a[],char b[])

     { int i;

     i=0;

     while(a[i]!='\0')

      { if(a[i] > b[i])

                 return(1);

                if(a[i] < b[i])

                 return(-1);

                i++;

      }

      return(0);

    }

 void concat(char a[],char b[])

   { int i,j;

    i=0;

    while(a[i]!='\0')                                                                           

     i++;

    for(j=0;b[j]!='\0';i++,j++)

      a[i]=b[j];

    a[i]='\0';

  }

void search(char a[] ,char b[])

  { int i,j,lena,lenb;

   for(lena=0;a[lena]!='\0';lena++);

   for(lenb=0;b[lenb]!='\0';lenb++);

   for(i=0;i<=lena-lenb+1;i++)

    {

    for(j=0;a[i+j]==b[j]&&b[j]!='\0';j++);

                if(b[j]=='\0')

                  printf("\nstring found at location:%d",i+1);

    }

  }

 void count(char a[])

  { int words=0,characters=0,spchar=0,i;

    for(i=0;a[i]!='\0';i++)

     { if(isalnum(a[i]) && (i==0 || !isalnum(a[i-1])))

                 words++;

       characters++;

       if(!isalnum(a[i]) && !isspace(a[i]))

                 spchar++;

    }

    printf("\n no of characters=%d",characters);

    printf("\n no of special characters=%d",spchar);

    printf("\n no of words=%d",words);

  }
10. SIMULATION OF STACK USING AN ARRAY:
#include<stdio.h>

#include<conio.h>

#define MAX 6

typedef struct stack

{

                int data[MAX];

                int top;

}stack;

void init(stack *);

int empty(stack *);

int full(stack *);

int pop(stack *);

void push(stack *,int);

void print(stack *);

void main()

{

                stack s;

                int x,op;

                init(&s);

                clrscr();

                do {

                     printf("\n\n1)Push\n2)Pop\n3)Print\n4)Quit");

                     printf("\nEnter Your choice: ");

                     scanf("%d",&op);

                     switch(op)

                      {

                                case 1:printf("\n enter a number :");

                                       scanf("%d",&x);

                                       if(!full(&s))

                                                  push(&s,x);

                                       else

                                                  printf("\nStack is full......");

                                       break;

                                case 2:if(!empty(&s))

                                                 { x=pop(&s);

                                                   printf("\npopped value= %d",x);

                                                 }

                                       else

                                                printf("\nStack is empty.....");

                                       break;

 

                                case 3:print(&s);break;

                                default: prinyf("wrong input");

                     }

      }while(op!=4);   //while(op<=0 || op>=5);

}

void init(stack *s)

{

                s->top=-1;

}

 

int empty(stack *s)

{

                if(s->top==-1)

                                return(1);

                return(0);

}

 

int full(stack *s)

{

                if(s->top==MAX-1)

                                return(1);

                return(0);

}

void push(stack *s,int x) 

{

                s->top=s->top+1;

                s->data[s->top]=x;

}

int pop(stack *s)

{

                int x;

                x=s->data[s->top];

                s->top=s->top-1;

                return(x);

}

void print(stack *s)

  {

                int i;

                printf("\n");

                for(i=s->top;i>=0;i--)

                                printf("%d  ",s->data[i]);
  }
11. SIMULATION OF STACK USING A LINKED LIST:
#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

typedef struct node

{

                int data;

                struct node *next;

} node;

node * init();

int empty(node *top);

int gettop(node *top);

node *  Delete(node *);

node *  insert(node *top ,int x);

void print(node  *top);

int main()

{

                node *top;

                int x,op;

                top=init();

                void clrscr();

                do {

                     printf("\n\n1)Push\n2)Pop\n3)Print\n4)Quit");

                     printf("\nEnter Your choice: ");

                     scanf("%d",&op);

                     switch(op)

                      { case 1:printf("\n enter a number :");

                                       scanf("%d",&x);

                                       top=insert(top,x);

                                       break;

                       case 2:if(!empty(top))

                                                 {

                                                                x=gettop(top);

                                                                printf("\npopped value= %d",x);

                                                                top=Delete(top);

                                                 }

                                       else

                                                                printf("\nStack is empty.....");

                                       break;

                       case 3:print(top);break;

                     }

      }while(op!=4);

}

node * init()

{

      return(NULL);

}

int empty(node  *top)

{

                if(top==NULL)

                                return(1);

                return(0);

}

node * insert(node *top,int x)

{

                node  *p;

                p=(node*)malloc(sizeof(node));

                p->data=x;

                p->next=top;

                return(p);

}

int gettop(node *top)

 {

   int x;

   x=top->data;

   return(x);

 }

node* Delete(node *top)

{

                node *p;

                p=top;

                top=top->next;

                free(p);

                return(top);

}

void print(node *p)

 {

                printf("\n");

                while(p!=NULL)

                   {

                                printf("%d  ",p->data);

                                p=p->next;

                   }

}
12. SIMULATION OF SINGLE QUEUE USING ARRAY:
#include<conio.h>

#include<stdio.h>

#define MAX 5

typedef struct Q

{

                int R,F;

                int data[MAX];

}Q;

void initialise(Q *P);

int empty(Q *P);

int full(Q *P);

void enqueue(Q *P,int x);

int dequeue(Q *P);

void print(Q *P);

int main()

{

                Q q;

                int op,x;

                initialise(&q);

                void clrscr();

                do

                   {

                                printf("\n\n1)Insert\n2)Delete\n3)Print\n4)Quit");

                                printf("\nEnter Your Choice:");

                                scanf("%d",&op);

                                switch(op)

                                   {

                                                case 1: printf("\n Enter a value:");

                                                                scanf("%d",&x);

                                                                if(!full(&q))

                                                                                enqueue(&q,x);

                                                                else

                                                                                printf("\nQueue is full !!!!");

                                                                break;

                                                case 2: if(!empty(&q))

                                                                   {

                                                                                x=dequeue(&q);

                                                                                printf("\nDeleted Data=%d",x);

                                                                   }

                                                                else

                                                                printf("\nQueue is empty !!!!");

                                                                break;

                                                case 3: print(&q);break;

                                   }

      }while(op!=4);

      return 0;

}

void initialise(Q *P)

{

                P->R=-1;

                P->F=-1;

}

int empty(Q *P)

{

                if(P->R==-1)

                                return(1);

                return(0);

}

int full(Q *P)

{

                if(P->R==MAX-1)

                                return(1);

                return(0);

}

void enqueue(Q *P,int x)

{

                if(P->R==-1)

                {

                                P->R=P->F=0;

                                P->data[P->R]=x;

                }

                else

                {

                                P->R=P->R+1%MAX;

                                P->data[P->R]=x;

                }

}

int dequeue(Q *P)

{

                int x;

                x=P->data[P->F];

                if(P->R==P->F)

                {

                                P->R=-1;

                                P->F=-1;

                }

                else

                                P->F=P->F+1;

                return(x);

}

void print(Q *P)

{

                int i;

                if(!empty(P))

                {

                                printf("\n");

                                for(i=P->F;i<=P->R;i++)

                                                printf("%d\t",P->data[i]);

                }

}
13. SIMULATION OF SINGLE QUEUE USING LINKED LIST:
#include<stdio.h>

#include<conio.h>

struct Node

{

   int data;

   struct Node *next;

}*front = NULL,*rear = NULL;

void insert(int);

void delete();

void display();

int main()

{

   int choice, value;

   void clrscr();

   printf("\n:: Queue Implementation using Linked List ::\n");

   while(1){

      printf("\n****** MENU ******\n");

      printf("1. Insert\n2. Delete\n3. Display\n4. Exit\n");

      printf("Enter your choice: ");

      scanf("%d",&choice);

      switch(choice){

                 case 1: printf("Enter the value to be insert: ");

                                 scanf("%d", &value);

                                 insert(value);

                                 break;

                 case 2: delete(); break;

                 case 3: display(); break;

                 case 4: exit(0);

                 default: printf("\nWrong selection!!! Please try again!!!\n");

      }

   }

   return 0;

}

void insert(int value)

{

   struct Node *newNode;

   newNode = (struct Node*)malloc(sizeof(struct Node));

   newNode->data = value;

   newNode -> next = NULL;

   if(front == NULL)

      front = rear = newNode;

   else{

      rear -> next = newNode;

      rear = newNode;

   }

   printf("\nInsertion is Success!!!\n");

}

void delete()

{

   if(front == NULL)

      printf("\nQueue is Empty!!!\n");

   else{

      struct Node *temp = front;

      front = front -> next;

      printf("\nDeleted element: %d\n", temp->data);

      free(temp);

   }

}

void display()

{

   if(front == NULL)

      printf("\nQueue is Empty!!!\n");

   else{

      struct Node *temp = front;

      while(temp->next != NULL){

                 printf("%d--->",temp->data);

                 temp = temp -> next;

      }

      printf("%d--->NULL\n",temp->data);

   }

}
14. SIMULATION OF DE-QUEUE USING ARRAY:
#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#define MAX 10

typedef struct node

{

                int data;

                struct node *next;

}node;

node * initialise();

int empty(node *rear);

int full(node *rear);

node * insert(node *rear,int x);

node * Delete(node *rear);

int getfront(node *rear);

void print(node *rear);

int main()

{

                node *rear;

                int x,i,op;

                rear=initialise();

                void clrscr();

                do

                   {

                                printf("\n\n1)Insert\n2)Delete\n3)Print\n4)Quit");

                                printf("\nEnter Your Choice:");

                                scanf("%d",&op);

                                switch(op)

                                   {

                                                case 1: printf("\n Enter a value:");

                                                                scanf("%d",&x);

                                                                rear=insert(rear,x);

                                                                break;

                                                case 2: if(!empty(rear))

                                                                   {

                                                                                x=getfront(rear);

                                                                                printf("\Deleted Data=%d",x);

                                                                                rear=Delete(rear);

                                                                   }

                                                                else

                                                                                printf("\nQueue is empty !!!!");

                                                                break;

                                                case 3: print(rear);break;

                                   }

                }while(op!=4);

                return 0;

}

node * initialise()

{

     return(NULL);

}

node *insert(node *rear,int x)

{

                node *p;

                p=(node*)malloc(sizeof(node));

                p->data=x;

                if(rear==NULL)

                {

                                p->next=p;

                                return p;

                }

                else

                {

                                p->next=rear->next;

                                rear->next=p;

                                return(p);

                }

}

node * Delete(node *rear)

{

                node *p;

                p=rear->next;

                if(rear->next==rear)

                                rear=NULL;

                else

                                rear->next=p->next;

                free(p);

                return(rear);

}

int getfront(node *rear)

 {

    return(rear->next->data);

 }

void print(node *rear)

{

                int i;

                node *p;

                if(rear!=NULL)

                  {     printf("\n");

                                p=rear->next;

                                do

                                  {

                                                printf("%d  ",p->data);

                                                p=p->next;

                                  }while(p!=rear->next);

                  }

}

int empty(node *rear)

{

                if(rear==NULL)

                                return 1;

                return 0;

}
15. SIMULATION OF CIRCULER QUEUE USING ARRAY:
#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#define MAX 10

typedef struct Q

{

                int R,F;

                int data[MAX];

}Q;

void initialise(Q *P);

int empty(Q *P);

int full(Q *P);

void enqueue(Q *P,int x);

int dequeue(Q *P);

void print(Q *P);

void main()

{

                Q q;

                int op,x;

                initialise(&q);

                void clrscr();

                do

                   {

                                printf("\n\n1)Insert\n2)Delete\n3)Print\n4)Quit");

                                printf("\nEnter Your Choice:");

                                scanf("%d",&op);

                                switch(op)

                                   {

                                                case 1: printf("\n Enter a value:");

                                                                scanf("%d",&x);

                                                                if(!full(&q))

                                                                                enqueue(&q,x);

                                                                else

                                                                                printf("\nQueue is full !!!!");

                                                                break;

                                                case 2: if(!empty(&q))

                                                                   {

                                                                                x=dequeue(&q);

                                                                                printf("\nDeleted Data=%d",x);

                                                                   }

                                                                else

                                                                printf("\nQueue is empty !!!!");

                                                                break;

                                                case 3: print(&q);break;

                                   }

      }while(op!=4);

}

void initialise(Q *P)

{

                P->R=-1;

                P->F=-1;

}

int empty(Q *P)

{

                if(P->R==-1)

                                return(1);

                return(0);

}

int full(Q *P)

{

                if((P->R+1)%MAX==P->F)

                                return(1);

                return(0);

}

void enqueue(Q *P,int x)

{

                if(P->R==-1)

                {

                                P->R=P->F=0;

                                P->data[P->R]=x;

                }

                else

                {

                                P->R=(P->R+1)%MAX;

                                P->data[P->R]=x;

                }

}

int dequeue(Q *P)

{

                int x;

                x=P->data[P->F];

                if(P->R==P->F)

                {

                                P->R=-1;

                                P->F=-1;

                }

                else

                                P->F=(P->F+1)%MAX;

                return(x);

}

void print(Q *P)

{

                int i;

                if(!empty(P))

                {

                                printf("\n");

                                for(i=P->F;i!=P->R;i=(i+1)%MAX)

                                                printf("%d\t",P->data[i]);

                                printf("%d\t",P->data[i]);

                }

}

To get more Download the pdf file

Also Read

Basic C Programs with Solution

Basic C Programs pdf with Solution Contents1 SUMATION OF TWO NUMBERS:2 INPUT A NUMBER AND CHECK THE NUMBER IS ODD OR EVEN:3 NESTED IF-ELSE PROGRAM(GRADATION SYSTEM):4 FIND THE ROOTS OF…

Data Structure Program in C

Data Structure Programs in C Contents0.1 Introduction:0.1.1 1. DATA STRUCTURE PROGRAM TO SEARCH AN ITEM FROM AN ARRAY USING BINARY SEARCH:0.2 Output:0.2.1 2. DATA STRUCTURE PROGRAM TO SORT AN ARRAY…

Best Offline Android Games

5 Best Offline Android Games Worth Playing It can be hard to find games that work offline, but thankfully there are some engrossing gems you can play without Wi-Fi or…

4
Leave a Reply

avatar
3 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
Vito GoerlichTanmoyHACK TOOL - FORTNITE CHEAT PC} Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
HACK TOOL - FORTNITE CHEAT PC}
Guest

I like this website its a master peace ! Glad I found this on google .

Vito Goerlich
Guest

Outstanding post, you have pointed out some excellent points, I also think this s a very wonderful website.

trackback

Google

We like to honor lots of other online web pages around the net, even though they aren’t linked to us, by linking to them. Under are some webpages worth checking out.