1、using System; using System.Collections.Generic; using System.Text; namespace 多à项?式?加ó法ぁ?和í乘?法ぁ? { class Node { public int coeff; public int expo; public Node next; } class list { public list() { } public No
2、de 输?入?(int n, Node m) { m = null; int i, c, e; Console.WriteLine("请?输?入?第台瞷0}个?多à项?式?的?项?数簓:", n); i = Convert.ToInt32(Console.ReadLine()); for (int j = 1; j <= i; j++) { Console.Write("请?输?入?第台瞷
3、0}项?系μ数簓:阰", j); c = Convert.ToInt32(Console.ReadLine()); Console.WriteLine(""); Console.Write("请?输?入?第台瞷0}项?幂Y次?:阰", j); e = Convert.ToInt32(Console.ReadLine()); Console.WriteLine(""); Node a = new
4、 Node(); a.coeff = c; a.expo = e; a.next = m; m = a; } return m; } public Node 输?出?(int n, Node m) { Node p; if (n == 1 || n == 2) Conso
5、le.Write("第台瞷0}个?多à项?式?:阰", n); else if(n==3) Console.Write("计?算?结á果?:阰"); else Console.Write("计?算?结á果?(辍?逆?置?后ó)?:阰"); for (p = m; p != null; p = p.next) { if (p.coeff < 0
6、 || p == m) Console.Write(p.coeff + "*X^" + p.expo); else Console.Write("+" + p.coeff + "*X^" + p.expo); } Console.WriteLine("\n"); return m; } public Node 复′制?(Node n, Node m)
7、 { Node p; for (p = m; p != null; p = p.next) { Node b = new Node(); b.coeff = p.coeff; b.expo = p.expo; b.next = n; n = b; } return n; }
8、 public Node 加ó法ぁ?Node q) { Node s; Node r; Node t; s = q; while (s != null) { r = s; t = s.next; while (t != null) {
9、if (s.expo == t.expo) { s.coeff += t.coeff; r.next = t.next; t = t.next; } else { t = t.next; r = r.next;
10、 } } s = s.next; } return q; } public Node 乘?法ぁ?Node a, Node b, Node c) { b = null; Node q; Node p; p = a; q = c; while (p != null)
11、 { q = c; while (q != null) { Node h = new Node(); h.coeff = p.coeff * q.coeff; h.expo = p.expo + q.expo; h.next = b; b = h;
12、 q = q.next; } p = p.next; } return b; } public Node 升序ò(Node m, Node n) { n = null; Node p; Node q; Node s; Node t; Node r; p = m; q = p.next; while (q
13、 null) { if (q.expo < p.expo) p = q; q = q.next; } Node a = new Node(); a.coeff = p.coeff; a.expo = p.expo; a.next = n; n = a; s = m;
14、 while (s != null) { if (s == p) s = s.next; if (s == null) break; Node b = new Node(); b.coeff = s.coeff; b.expo = s.expo; t = n; r = n
15、next; while (r != null) { if (r.expo > b.expo) { b.next = r; t.next = b; break; } t = t.next;
16、 r = t.next; } if (r == null) { b.next = r; t.next = b; } s = s.next; } return n; } public Node 逆?置?(Node m) {
17、 Node p; Node q; p = m; m = null; while (p != null) { q = p.next; p.next = m; m = p; p = q; } return m; } stat
18、ic void Main(string[] args) { Node start1 = null; Node start2 = null; Node start3 = null; Node start4 = null; list m = new list(); while (true) { try {
19、 Console.WriteLine("\n <<菜?单蹋?>"); Console.WriteLine("\n1、¢一?元a多à项?式?的?输?入?"); Console.WriteLine("\n2、¢一?元a多à项?式?的?加ó法ぁ?); Console.WriteLine("\n3、¢一?元a多à项?式?的?乘?法ぁ?); Console.WriteLine("\n0、¢退?出?");
20、 Console.Write("\n请?输?入?您ú的?选?择?:阰"); char ch = Convert.ToChar(Console.ReadLine()); Console.WriteLine("\n"); switch (ch) { case '1': {
21、 start1 = m.输?入?(1, start1); start2 = m.输?入?(2, start2); Console.WriteLine("\n输?入?完?成é!\n"); break; } case '2':
22、 { start3 = null; start3 = m.复′制?(start3, start1); start3 = m.复′制?(start3, start2); start3 = m.加ó法ぁ?start3); m.输?出?(1, st
23、art1); m.输?出?(2, start2); start4 = m.升序ò(start3, start4); m.输?出?(3, start4); start4 = m.逆?置?(start4); m.输?出?(4, start4);
24、 break; } case '3': { start3 = m.乘?法ぁ?start1, start3, start2); start3 = m.加ó法ぁ?start3); m.输?出?(1,
25、 start1); m.输?出?(2, start2); start4 = m.升序ò(start3, start4); m.输?出?(3, start4); start4 = m.逆?置?(start4); m.输?出?(4, start4);
26、 break; } case '0': { return; } default: { Con
27、sole.WriteLine("\n输?入?有瓺误ó!?"); break; } } } catch (Exception e) { Console.WriteLine("\n请?确ā?定¨输?入?是?否?正y确ā?!?" + e.Message); } } } } }






