Подскажите как сделать правильнее?
От: Deposit Россия  
Дата: 18.01.06 13:20
Оценка:
Не работает лишь одна функция 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);
   }
  }
///////////////////////////////////////////////////
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.