以前にも書いたのですがどうしてもわからないのでお願いします。
 線形リストを用いて、過去に素数と分かった数を保存し、指定された数(N)
以下の素数を求めるプログラムを作成せよ。
ただし、Nはプログラム実行中で外部から入力できるようにすること。

線形リストはこんな感じののですけど
#include<stdio.h>
#include<stlib.h>
typedef struct data Data;
typedef struct data *DateP;
struct data{
int val;
DataP prev;
};
DataP add_data( int i,DataP last);
void print_data(Data last);
void free_list( DataP last);

よろしくお願いします。