Я написал программу для генерации одночленов и полиномов, а также для печати одночленов и полиномов. Данные вводятся с клавиатуры. Например, сначала введите количество групп данных 3, затем введите данные: 1,3,2,4,3,6,3,4,2 (каждая группа имеет 3 элемента). Мне нужен выходной моном Y ^ {1} {2,3} Y ^ {4} {3,6} Y ^ {3} _ {4,2}. Моя программа может работать. Но вывод не правильный. Я думаю, что проблема программы заключается в следующей части. Я думаю, что scanf не хорош в следующем. Есть ли другой лучший способ ввода, чтобы решить эту проблему? Вся программа в http://hi.baidu.com/lijr03/blog/item/51e17b0c63614bc863d98629.html
monomial create_monomial(int number) /* create a monomial */
{
monomial m,s;
monomial p;
int i;
printf("Please input the parameters (for example, 2, 2, 3 denotes the monomial P^{2}_{2,3}). The first subscripts i's of P's should be in increase order.");
m=(monomial)malloc(sizeof(monomial_node));
m->head=m->tail=(monomial)malloc(sizeof(monomial_node));
if(m->head==NULL)
{
return NULL;
}
m->head->next=m->tail;
m->tail->next=NULL;
p=(monomial)malloc(sizeof(monomial_node));
m->head->next=p;
p->next=m->tail;
scanf("%d", &((p->y).l));
scanf("%d", &((p->y).i));
scanf("%d", &((p->y).k));
if(number > 1)
{
for(i=0;i<number-1;i++)
{
s=(monomial)malloc(sizeof(monomial_node));
scanf("%d", &((s->y).l));
scanf("%d", &((s->y).i));
scanf("%d", &((s->y).k));
s->next=p->next; /* insert the node a */
p->next=s;
free(s);
}
}
return m;
}