     #include <stdio.h>
     #define  N  3
     double dot(double v[],double w[], int m);
     void main(){
       int i,j;
       double a[N][N],x[N],y[N],sum,xydot;
       struct node
       {
         int value;
         struct node *next;
       } *list,start;
   
       /* Initialize arrays */
       for(i=0;i<N;i++){
         x[i]=2.0;
         y[i]=i+1;
         for(j=0;j<N;j++){
           a[i][j]=i*j+j;
         }
       }
  
       /* Compute the dot product x and y */
       xydot=dot(x,y,N);
       printf("dot product of x & y =  %f\n",xydot);
    
       /* Compute y=ax */
       for(i=0;i<N;i++){
         sum=0;
         for(j=0;j<N;j++){
           sum+=a[i][j]*x[j];
         }
         y[i]=sum;
       }
       printf("y =  ");
       for(i=0;i<N;i++){
         printf("%f ",y[i]);
       }
       printf("\n");

       /* Built list*/
       start.value=1;
       list=&start;
       for(i=1;i<N;i++){
       list->next=(struct node *) malloc(sizeof(struct node));
       list=list->next;
       list->value=i;
       }
       list->next=NULL;
       printf("list: ");
       list=&start;
       for(i=0;i<N;i++){
         printf("%d ",list->value);
         list=list->next;
       }
       printf("\n");
     }
