一元多项式


[cpp] view plain copy print ?
  1. typedef struct  polynomial  
  2. {  
  3.     int factor;//系数  
  4.     int indice;//指数  
  5.     struct polynomial *next;  
  6. }polynomial,*LinkList;  
typedef struct  polynomial
{
	int factor;//系数
	int indice;//指数
	struct polynomial *next;
}polynomial,*LinkList;

代码如下:

[cpp] view plain copy print ?
  1. //尾插法--带头结点  
  2. void CreateLink(LinkList &L, int n)  
  3. {  
  4.     LinkList p,s;  
  5.     int i;  
  6.     L = (LinkList)malloc(sizeof(polynomial));  
  7.     L->next = NULL;  
  8.     p = L;  
  9.     for (i = 0; i < n; i++)  
  10.     {  
  11.         s = (LinkList)malloc(sizeof(polynomial));  
  12.         cout<<"依次输入多项式系数和指数:";  
  13.         cin>>s->factor>>s->indice;  
  14.         s->next = NULL;  
  15.         p->next = s;  
  16.         p = s;  
  17.     }  
  18. }  
  19. //多项式相加(返回带头结点的链表)  
  20. void AddList(LinkList List1, LinkList List2, LinkList &L)  
  21. {  
  22.     LinkList p1,p2,list,s;  
  23.     L = (LinkList)malloc(sizeof(polynomial));  
  24.     L->next = NULL;  
  25.     list = L;  
  26.     p1 = List1->next;  
  27.     p2 = List2->next;  
  28.     while (p1 && p2)  
  29.     {  
  30.         if (p1->indice < p2->indice)  
  31.         {  
  32.             s = p1->next;  
  33.             list->next = p1;  
  34.             list = p1;  
  35.             list->next = NULL;//将该节点与原来多项式断开连接  
  36.             p1 = s;  
  37.         }  
  38.         else if (p1->indice == p2->indice)  
  39.         {  
  40.             p1->factor = p1->factor + p2->factor;  
  41.             if (p1->factor != 0)//系数和不为0  
  42.             {  
  43.                 list->next = p1;  
  44.                 s = p1->next;  
  45.                 list = p1;  
  46.                 list->next = NULL;//将该节点与原来多项式断开连接  
  47.                 p1 = s;  
  48.                 p2 = p2->next;  
  49.             }   
  50.             else //系数和为0  
  51.             {  
  52.                 p1 = p1->next;  
  53.                 p2 = p2->next;  
  54.             }  
  55.               
  56.         }  
  57.         else  
  58.         {  
  59.             s = p2->next;  
  60.             list->next = p2;  
  61.             list = p2;  
  62.             list->next = NULL;  
  63.             p2 = s;  
  64.         }  
  65.     }  
  66.     if(p1 != NULL) list->next = p1;  
  67.     if(p2 != NULL) list->next = p2;  
  68. }  
  69. //输出结果  
  70. void VisitList(LinkList L)  
  71. {  
  72.     LinkList p;  
  73.     p = L->next;  
  74.     if (p==NULL)  
  75.     {  
  76.         cout<<"0"<
  77.     }  
  78.     while (p)  
  79.     {  
  80.         cout<factor<<"X^"<indice;  
  81.         p = p->next;  
  82.         if(p != NULL)  
  83.             cout<<"+";  
  84.     }  
  85.     cout<
  86. }  

你可能感兴趣的:(一元多项式)