What is the problem with my display function....
Code:
/*PROGRAM TO IMPLEMENT DIFFERENT OPERATIONS ON LINKED LISTS
*/
#include<stdio.h>
#include<stdlib.h>
#define draw for(i = 0 ;i<70;++i)printf(" ");
int flag_error = 0;

struct list
        {
                int num;
                struct list *link;
        };
typedef struct list node;

void display(node **p)
{
        node **temp = p;
        while(*temp != NULL)
        {
                printf("%d ->",*temp->num);

        } 

}
main()
{
         node * head;
        //MENU//
        //while(1)
        {       
                flag_error = 0;
                int i;
                system("clear");
                draw
                printf("-----------------------------\n\n\n");
                draw
                printf("------LIST MANIPULATION------\n\n");
                draw
                printf("      1 : CREATE LIST \n");
                draw
                printf("      2 : ADD ELEMENT \n");
 printf("      3 : DELETE ELEMENT \n");
                draw
                printf("      4 : DISPLAY LIST \n");
                draw
                printf("      5 : EXIT\n");
                printf("-----------------------------\n\n\n");
                draw
                printf("      ENTER YOUR CHOICE\n");


                {
                        int choice;
                        scanf("%d",&choice);
                        switch( choice )
                        {
                                case 1: draw
                                        printf("--------ENTER ELEMENT--------\n");
                                        {
                                                int num;
                                                scanf("%d",&num);
                                                create(&head);
                                        }
                                        printf("--------LIST IS--------\n");
                                        display(&head);
                                        break;
                                case 2: draw
                                        printf("--------ENTER ELEMENT TO ADD--------\n");
                                        {
                                                int num;
                                                scanf("%d",&num);
                                                draw
                                                printf("--------1 : ENTER AFTER AN ELEMENT-------- \n");
                                                draw
                                                printf("--------2 : ENTER BEFORE AN ELEMENT--------\n");
                                                draw
                                                printf("--------3 : ENTER AT A GIVEN POSITION--------\n");
                                                draw
                                                printf("----------------\n");
                                                {
                                                        int ch;
                                                        scanf("%d",&ch);
                                                        draw
                                                        switch(ch)
                                                                {
                                                                        case 1: 
                                                                        case 2:
                                                                                printf("--------ENTER THE ELEMENT--------\n");
                                                                                break;
                                                                        case 3:printf("--------ENTER THE POSITION--------\n");
                                                                }
                                                        {       
                                                                int no;
                                                                scanf("%d",&no);
                                                                add(&head,num,ch,no);
                                                        }
                                                }
                                                draw
                                                if( flag_error != 1)
                                                {

                                                        printf("--------NUMBER ADDED TO LIST--------\n");
        draw
                                                        printf("--------LIST IS--------");
                                                        display(&head);
                                                }
                                                else
                                                printf("--------LIST IS FULL ...--------");

                                        }
                                        break;
                                case 3 :draw
                                        printf("--------DELETE FROM WHICH POSITION\n--------\n");
                                        {
                                                int pos;
                                                scanf("%d",&pos);
                                                delete(&head,pos);
                                        }
                                        draw
                                        if(flag_error != 1)
                                        {

                                                printf("--------ELEMENT DELETED--------\n");
      draw
                                                printf("--------LIST IS:");
                                                display(&head);
                                                printf("--------");
                                        }
                                        else
                                        printf("--------LIST IS EMPTY--------\n");
                                        break;
                                case 4 :display( &head );
                                        break;
                                case 5:return 0 ;
                                default:draw
                                        printf("--------INVALID CHOICE--------\n");
                        }
                }
                draw
                printf("--------CONTINUE Y?N?--------\n");
                {
                        char ch ;
                        scanf(" %c",&ch);
                        if( ch != 'y' || ch != 'Y' )
                       return 0;
                }
        }
}
when I compile,the compiler says "error: request for member ‘num’ in something not a structure or union" about the statement " printf("%d ->",*temp->num);"