Полагаю, вы не пробовали писать и компилировать.
Элементы связанного списка должны иметь хотя бы некоторое место для хранения значения из вашего массива, скажем, данные типа int.
#include <stdio.h>
#include <malloc.h>
#define N 3
typedef struct a{
struct a* prev;
struct a* next;
int data;
}item;
int main(void)
{
item* head;
item* tail;
item* temp;
int num = N;
int data[N] = {1,2,3}; /*initialization*/
int i = 0;
head = (item*)malloc(sizeof(item));
head -> prev = NULL;
head -> next = NULL;
tail = head;
for(i = 0; i < num; i ++){
temp = tail;
tail -> next = (item*)malloc(sizeof(item));
tail = tail -> next;
tail -> next = NULL;
tail -> data = data[i];
tail -> prev = temp;
}
for(temp = head -> next; temp != NULL; temp = temp -> next) /*the following is for testing purpose*/
printf("%d\t", temp -> data);
return 0;
}
Помните, что элемент head не содержит того, что вы хотите.