Не работает лишь одна функция MakeListWord Вывода слов в списке.
В функции AddList по условию добавляется три элемента списка.
/******************************************************/
void AddList(LIST *list,char *name,char *age, char *wgt)
{
LISTEL *listel=(LISTEL *)malloc(sizeof(listel));
if(listel==NULL) return;
listel->name=(char*)malloc(strlen(name)+1);
listel->age=(char*)malloc(strlen(age)+1);
listel->wgt=(char*)malloc(strlen(wgt)+1);
if(listel->name==NULL)
if(listel->age==NULL)
if(listel->wgt==NULL) return;
strcpy(listel->name, name);
strcpy(listel->age, age);
strcpy(listel->wgt, wgt);
listel->left=NULL;
listel->right=NULL;
printf("добавление элемента\n");
if(list->head==NULL)
{
list->head=list->tail=listel;
}
else
{
list->tail->left=listel;
listel->right=list->tail;
list->tail=listel;
}
list->size++;
}
/*******************************************************/
А в функции MakeListWord надо вставить строку в один элемент списка? Как это сделать?
/****************************************************/
void MakeListWord(char *exp, LIST *list)
{
char *begword, *word;
int len, i;
while(1)
{
while(*exp==' ') exp++;
begword=exp; len=0;
while(*exp) //определение длины слова
{
if(*exp!=' ')
{
len++;
exp++;
}
else break;
}
if(len==0) return;
//выделение слова
word=(char *)malloc(len+1);
for(i=0; i<len; i++) word[i]=begword[i];
word[len]='\0';
//запись слова в список
AddList(list,word); free(word);
}
}
///////////////////////////////////////////////////