Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Представить многочлен в виде линейного списка. Написать прогу кот выполняет сложение многочленов




// будем считать что списки упорядочены по возрастанию степеней элементов многочленов

list* add(list *t1,list *t2)

{

list * new_list,*tek;

list *l1 = t1;

list *l2 = t2;

bool flg = false;

while((l1!=NULL)&&(l2!=NULL))

{//пока не кончится один из двух многочленов

if(l1->s!=l2->s)//если степени не равны

{

if(l1->s>l2->s)//если степень 1-го больше чем 2-го

{

while((l1->s!=l2->s)&&(l2!=NULL))//пока степени не выровняются

{

list *h = new list;//создаем 1-й элемент

h->k=l2->k;

h->s=l2->s;

h->next=NULL;

if(!flg)//если это первый элемент

{//создаем начало списка

flg = true;

new_list = h;

tek = h;

}else{//иначе добавляем в очередь

tek->next = h;

tek = h;

}

l2 = l2->next;//перходим к след эл-ту

}}else{//если степень 2-го больше чем 1-го

while((l1->s!=l2->s)&&(l1!=NULL)){ //пока степени не выровняются

list *h = new list;//созд новый эл-т очереди

 

h->k=l1->k;

h->s=l1->s;

h->next=NULL;

if(!flg) //если это первый элемент

{//создаем начало списка

flg = true;

new_list = h;

tek = h;

}else{//иначе добавляем в очереь

tek->next = h;

tek = h;

}

l1=l1->next; //перходим к след эл-ту

}}

}else{//если степени равны

list *temp = new list; //созд новый эл-т очереди

temp->k = l1->k+l2->k;//коэф складываем

temp->s = l1->s;

temp->next = NULL;

if(!flg) {

new_list = temp;

tek = temp;

flg = true;

}else

{

tek ->next = temp;

tek = temp;

}

}

l1=l1->next;

l2=l2->next;

}

//проверяем который многочлен не окончился и дописываем в конец резельтирующего многочлена

if((l1!=NULL)&&(l2==NULL))//незакончился 1-ый

while(l1!=NULL){

list *tt = new list;

tt->s = l1->s;

tt->k= l1->k;

tt->next= NULL;

tek->next = tt;

tek = tt;

l1=l1->next;

}else

if((l1==NULL)&&(l2!=NULL))//незакончился 2-ой

while(l2!=NULL){

list *tt = new list;

tt->s = l2->s;

tt->k= l2->k;

tt->next= NULL;

tek->next = tt;

tek = tt;

l2=l2->next;

}

return new_list;

}

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных