public static DoublePolynomList operator +(DoublePolynomList a, DoublePolynomList b)
 {
     DoublePolynomList summ = new DoublePolynomList();
     DoublePolynomNode sx = summ.Head;
     int value = 0;
     DoublePolynomNode ax = (a.First as DoublePolynomNode).Next, bx = (b.First as DoublePolynomNode).Next;
     //добавляем пока не кончится один из списков
     while ((ax != a.Head) && (bx != b.Head))
     {
         if (ax.Power == bx.Power)
         {
             value = ax.Value + bx.Value;
             if (value != 0)
             {
                 sx.Next = new DoublePolynomNode(value, ax.Power);
                 sx.Next.Prev = sx;
                 sx = sx.Next;
             }
             ax = ax.Next;
             bx = bx.Next;
         }
         else
         {
             if (ax.Power > bx.Power)
             {
                 sx.Next = new DoublePolynomNode(ax.Value, ax.Power);
                 ax = ax.Next;
             }
             else
             {
                 sx.Next = new DoublePolynomNode(bx.Value, bx.Power);
                 bx = bx.Next;
             }
             sx.Next.Prev = sx;
             sx = sx.Next;
         }
     }
     //добавляем конец a
     while (ax != a.Head)
     {
         sx.Next = new DoublePolynomNode(ax.Value, ax.Power);
         sx.Next.Prev = sx;
         sx = sx.Next;
         ax = ax.Next;
     }
     //добавляем конец b
     while (bx != b.Head)
     {
         sx.Next = new DoublePolynomNode(bx.Value, bx.Power);
         sx.Next.Prev = sx;
         sx = sx.Next;
         bx = bx.Next;
     }
     //выбрасываем вспомогательный
     sx.Next = summ.Head;
     summ.Head.Prev = sx;
     return summ;
 }
 private void SetA()
 {
     try
     {
         List<int> lst = new List<int>();
         for (int i = 0; i < List_A.Items.Count; i++)
             lst.Add((int)List_A.Items[i]);
         PolynomA = new DoublePolynomList(lst);
     }
     catch
     {
         MessageBox.Show("Ошибка формирования списка", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
 public MainForm()
 {
     InitializeComponent();
     DoublePolynomList list = new DoublePolynomList(new List<int>(new int[] { 1, 35, 4, 5, 0, 2 }));
 }
 public DoublePolynomList GetC()
 {
     PolynomC = PolynomA + PolynomB;
     return PolynomC;
 }
 private void toolStripButton1_Click(object sender, EventArgs e)
 {
     SetA();
     SetB();
     PolynomC = PolynomA + PolynomB;
 }