При печати полинома первый коэффициент и показатель неоднократно печатаются для n (не членов) раз.Полином в круговом связанном списке
Input:
No of terms: 3
Enter coefficient and exponent: 3 3
Enter coefficient and exponent: 2 2
Enter coefficient and exponent: 1 1
Output:
3x^(3) + 3x^(3) + 3x^(3)
Это код:
#include<stdio.h>
#include<stdlib.h>
struct Node{
int coef , exp;
struct Node* next;
};
struct Node* create(struct Node*);
int main(){
int val , choice , loc;
struct Node* A = NULL;
struct Node* B = NULL;
A = create(A);
B = create(B);
display(A);
display(B);
do{
printf("\n\n-----POLYNOMIAL OPERATIONS-----\n1.Addition\n2.Multiply\n3.Evaluate\n4.Exit\n--->");
scanf("%d",&choice);
switch(choice){
case 1://Adding
break;
case 2://Multiplying
break;
case 3://Evaluating
break;
}
}while(choice != 4);
return 0;
}
struct Node* create(struct Node* p){
int i , c , x , t;
printf("\nNumber of terms: ");
scanf("%d",&t);
for(i = 0 ; i < t ; i++){
struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
printf("Enter Coefficient & Exponent: ");
scanf("%d%d",&c,&x);
temp->coef = c;
temp->exp = x;
if(p == NULL){
p = temp;
temp->next = p;
}else{
struct Node* temp1 = p;
while(temp1->next != p) temp1 = temp1->next;
temp1->next = temp;
temp->next = p;
}
}
return p;
}
void display(struct Node* p){
struct Node* temp = p;
printf("\nPOLYNOMIAL: ");
do{
printf("%dx^(%d)",p->coef,p->exp);
temp = temp->next;
if(temp != p){
printf(" + ");
}
}while(temp != p);
}
В функции 'create' вы связываете поле' .next' 'temp' с' temp' (потому что вы выполняете 'p = temp; temp-> next = p;'). –
Почему вы используете круговой список? Почему не обычный (некруглый) список? Я не вижу очевидной выгоды. –