linked list of structures

Discussion in 'C' started by basavaraj_l, Dec 16, 2010.

  1. basavaraj_l

    basavaraj_l New Member

    Joined:
    Dec 16, 2010
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    Linked list
    Hi aal,
    I am trying to draw different shapes in BREW MP. it’s a mob OS by Qualcomm. The programming is in C.
    The operation is I’ve to draw different shapes on screen based on the selected button. But before drawing the next shape I need to store the values of old shapes which I had drew. So I need to maintain data structure for each shapes. When I press particular button(say circle) after drawing that circle values need to be stored in linked list before drawing next shape.

    I’ve taken a linked list after drawing each shape add it as a node to linked list then before calling new shape traverse this list n draw all available shapes.


    for that i've bulit union inside a structure with type_def
    Code:
    struct shapes{
              int type_in_union;
               union draw{
               struct line lines;
               struct ellipse ellipses;
               struct rect rects;
               struct polygon polygons;
    
                     }draw;
    }shapes1;
    
    
    
    
    struct line{
    int sx,sy;
    int ex,ey;
    }line;
    
    struct ellipse{
    int cx,cy;
    int wx;
    int wy;
    }ellipse;
    
    struct rect{
    int x,y;
    int dx,dy;
    }rect;
    
    struct polygon{
    int len;
    struct point *points;
    }poly;
    
    struct point{
    int x,y;
    }points;
    
    
    now i want to dump after each operation(each shape ) that structure into the linked list so that when next time before drawing any new shape i can call all the previous shapes i had drew using linked list .
    Code:
    struct Node{
    struct shapes *shape;
    struct Node *pNext; 
    struct Node *pPrev;
    int type;
    };
    
    I am Trying to create nodes of structure

    Code:
    insert_node(create_node(&shape_type,&a,&b,&x,&y));
    
    void insert_node(struct Node *pNode)
    {
            
            struct Node *t;
            struct Node *pTemp = NULL;
            if(pStart == NULL)
            {
            pStart = pNode;   /* Store address of the node as the start node */
            return;
            }
            else
            {
                t=pStart;
                while(t->pNext!=NULL)
                {
                    t=t->pNext;
                    t->pNext=pNode;
                    pNode->pPrev=t;
                    
                }
            }
    }
    
    
    
    struct Node* create_node(int *shape_type,int *a,int *b,int *x,int *y)
    {
      struct Node *pNode = NULL;                         // Pointer to the new node                 
      pNode = (struct Node*)malloc(sizeof(struct Node)); // Allocate memory for node                
      pNode->pNext = NULL;                               // No next node yet                        
      pNode->pPrev = NULL;                                 // No previous node
      pNode->type=*shape_type;
      pNode->shape = create_record(&shape_type,&a,&b,&x,&y); // Create record and store address in node 
      return pNode;
    }
    
    create_record function

    Code:
    struct shapes*  create_record(int *shape_type,int *a,int *b,int *x,int *y)
    {
        struct shapes *shape=NULL;
        
        if(*shape_type==LINE)
        {
        //struct shapes *shape=NULL;
        shape = (struct shapes*)malloc(sizeof(struct shapes)); 
        shape->draw.lines=createline(&shape_type,&a,&b,&x,&y);
        }
            return shape;
        
    }
    
    
    createline function
    Code:
    struct line* createline(int *shape_type,int *a,int *b,int *x,int *y)
    {
        struct line *line1=NULL;
        line1 = (struct line*)malloc(sizeof(struct line));
        line1->start_x=*a;
        line1->start_y=*b;
        line1->end_x=*x;
        line1->end_y=*y;
        return line1;
    }
    
    Is It Right way to store the things into structures???????????
    n also i wantt to retrieve the things how it can be done....??????


    Thanks
    RAJ
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice