このプログラムで目的を達せられないの?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct list{
  int num;
  struct list* prev;
}list;

int main(void){
  int nums[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

  srand((unsigned) time(NULL));
  int owari_no_aizu = rand() % 10;

  list* p = NULL;
  for(int i=0; i<owari_no_aizu; i++){
    list* p_tmp = (list*)malloc(sizeof(list));
    p_tmp->prev = p;
    p_tmp->num = nums[i];
    p = p_tmp;
  }

  while(p!=NULL){
    printf("%d,", p->num);
    list* p_tmp = p;
    p = p->prev;
    free(p_tmp);
  }
  return 0;
}