Для того случая, когда информационная строка нашего списка представляет собой простой массив, туда можно вложить любой тип данных. Правда действия, которые необходимо произвести, неочевидны.
1) Заносим туда указатель (значение указателя – NULL)
char *p;
struct ListP *P0;
p=(char *)malloc(sizeof (char *));
P0=CRbegStrP(source); /* создается первый элемент списка */
p=(char *)NULL;
ADDendStrP1(P0,(char
*)&p,sizeof(struct ListP *));
/* в конец списка добавляется элемент со значением NULL */
2) Занесение числа int:
int p;
struct ListP *P0;
P0=CRbegStrP(source);
p=10;
ADDendStrP1(P0,(char *)&p,sizeof(int));
А можно так:
char * p;
struct ListP *P0;
p=(char *)malloc(sizeof(int));
P0=CRbegStrP(source);
p=59;
ADDendStrP1(P0,(char
*)&p,sizeof(int));
free(p);
Обратный процесс(извлечение целого числа из списка:
int I;
S0=(char *)malloc(100);
READonPosStrP1(P,1,S0,sizeof(int));
CpStrN2(S0,&I,sizeof(int));
printf(“%d”,I);
Хотя можно было бы и сразу копировать из списка в I, без промежуточной строки S0.