typedef struct child {int count; char word[100]; inner_list*next;} child;
typedef struct parent
{ char data [100];
child * head;
int count;
parent * next; } parent;
void append(child **q,char num[100],int size)
{ child *temp,*r,*temp2,*temp3;
parent *out=NULL;
temp = *q;
temp2 = *q;
temp3 = *q;
char *str;
if(*q==NULL)
{ temp = (child *)malloc(sizeof(child));
strcpy(temp->word,num);
temp->count =size;
temp->next=NULL;
*q=temp;
}
else
{ temp = *q;
while(temp->next !=NULL)
{ temp=temp->next;
}
r = (child *)malloc(sizeof(child));
strcpy(r->word,num);
r->count = size;
r->next=NULL;
temp->next=r;
}
}
Это моя функция добавления, которую я использую для добавления элемента в мой дочерний список. Но моя проблема в том, что он должен добавлять уникальные значения, за которыми следует строка. Что означает:
Inputs : aaa bbb aaa ccc aaa bbb ccc aaa
Приложение должно действовать:
For aaa string there should be a list like bbb->ccc(Not bbb->ccc->bbb since bbb is already there if bbb is coming more than one time it should be increase count only.)
For bbb string there should be list like aaa->ccc only
For ccc string there should be list like aaa only
Я надеюсь, что смогу прояснить это. Есть какие-нибудь идеи? Пожалуйста, запросите дополнительную информацию.
Я попробовал проверить предыдущие элементы, введенные с новым элементом. Я как бы провалил это.
int search(child *p)
{
child *temp= (child *)malloc(sizeof(child));
int var =0;
char num[100];
temp = p;
strcpy(num,p->word);
while(temp->next!=NULL)
{
if(strcmp(temp->word,num)==0)
var =1;
temp=temp->next;
}
return var;
}
Это то, что я пробовал до сих пор. С помощью этой функции поиска я бы контролировал, находится ли элемент здесь или нет. Но это не удалось.