锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
2 #include<stdio.h>
3 #include<stdlib.h>
4 #define N 8 //鎸囨槑澶氶」寮忔暟鎹」鐨勬暟鐩?/span>
5
6 int GetLength(); //鑾峰緱鍗曢摼琛ㄧ殑闀垮害
7 void Print(); //鎵撳嵃鍑哄崟閾捐〃鐨勮妭鐐規(guī)暟鎹?/span>
8
9 typedef struct multinomialnode //瀹氫箟瀛樺偍澶氶」寮忔暟鎹」鐨勮妭鐐圭殑緇撴瀯浣?/span>
10 {
11 int coefficient,power; //瀹氫箟緋繪暟鍜屽箓
12 struct multinomialnode *next;
13 }node;
14
15 node *Create(int num) //鍒涘緩瀛樺偍澶氶」寮忕殑閾捐〃
16 {
17 int i;
18 node *head,*pointer,*tmp;
19
20 head=(node*)malloc(sizeof(node));
21 if(head!=NULL) pointer=head;
22
23 printf("璇蜂緷嬈¤緭鍏ヨ澶勭悊鐨勫欏瑰紡鍏冪礌鐨勭郴鏁板拰騫傦細\n");
24 for(i=0;i<num;i++)
25 {
26 printf("璇瘋緭鍏ョ %d 涓厓绱犵殑緋繪暟鍜屽箓錛歕n",i+1);
27 tmp=(node*)malloc(sizeof(node));
28 if(tmp!=NULL)
29 {
30 scanf("%d%d",&tmp->coefficient,&tmp->power);
31 tmp->next=NULL;
32 pointer->next=tmp;
33 pointer=tmp;
34 }
35 }
36 return(head);
37 }
38
39 node *Standard(node *head) //瀵瑰欏瑰紡榪涜瑙勮寖鍖栫殑榪囩▼
40 {
41 int i;
42 node *pointer,*pre,*cur,*tmp,*q;
43
44 pointer=head->next; //浠h〃鐢ㄤ簬姣旇緝鍙婂悎騫剁浉鍚屽箓鐨勮妭鐐癸紝涔熺敤浜庢潯浠跺垽鏂紝鎺у埗寰幆
45 pre=pointer; //浠h〃琚瘮杈冪殑鑺傜偣鐨勪笂涓涓妭鐐圭殑鎸囬拡錛岀敤浜庨摼鎺ヨ妭鐐圭殑鎿嶄綔錛屼粠鑰屾瀯閫犳柊鐨勯摼琛?/span>
46 cur=pointer->next; //浠h〃琚瘮杈冪殑鑺傜偣錛屼篃鐢ㄤ簬鏉′歡鍒ゆ柇錛屾帶鍒跺驚鐜?/span>
47
48 while(pointer->next!=NULL) //鍚堝茍鏃犲簭澶氶」寮忎腑鍏鋒湁鐩稿悓騫傜殑鑺傜偣錛屽茍灝嗚鍚堝茍鍚庣殑鑺傜偣鍒犻櫎
49 {
50 while(cur!=NULL)
51 {
52 if(pointer->power==cur->power) //鐩哥瓑鍒欏悎騫訛紝鍚屾椂鍒犻櫎琚悎騫惰繃鐨勮妭鐐?/span>
53 {
54 pointer->coefficient+=cur->coefficient; //鍚堝茍鍏鋒湁鐩稿悓騫傜殑欏圭殑緋繪暟
55 q=cur;
56 cur=cur->next;
57 pre->next=cur;
58 free(q); //閲婃斁鍐呭瓨
59 }
60 else //涓嶇瓑鍒欐寚鍚戣姣旇緝鐨勮妭鐐瑰強鍏朵笂涓鑺傜偣鐨勬寚閽堝潎鍚庣Щ
61 {
62 cur=cur->next;
63 pre=pre->next;
64 }
65 }
66 pointer=pointer->next; //鍚庣Щ
67 pre=pointer; //閲嶆柊鍒濆鍖?/span>
68 cur=pointer->next; //閲嶆柊鍒濆鍖?/span>
69 }
70
71 Print(head); //鎵撳嵃鍑轟笂闈hile浠ュ悗鏋勯犳垚鐨勫欏瑰紡
72
73 for(i=0;i<GetLength(head);i++) //灝嗕笂涓姝hile瀹屾垚浠ュ悗寰楀埌澶氶」寮忚繘涓姝ヨ鑼冨寲錛屼嬌涔嬫寜鏁版嵁欏圭殑騫傜敱澶у埌灝忎緷嬈℃帓鍒?/span>
74 {
75 pre=head; //浠h〃鎸囧悜褰撳墠鑺傜偣鐨勬寚閽堢殑涓婁竴鎸囬拡錛岀敤浜庝氦鎹㈣妭鐐圭殑鎿嶄綔
76 cur=head->next; //浠h〃鎸囧悜褰撳墠鑺傜偣鐨勬寚閽堬紝鐢ㄤ簬姣旇緝
77 tmp=cur->next; //浠h〃鎸囧悜褰撳墠鑺傜偣鐨勪笅涓鑺傜偣鐨勬寚閽堬紝鐢ㄤ簬姣旇緝鍜屾潯浠跺垽鏂?/span>
78
79 while(tmp!=NULL)
80 {
81 if(cur->power<tmp->power) //濡傛灉褰撳墠鏁版嵁欏圭殑騫傚皬浜庡叾鍚庣揣閭葷殑鏁版嵁欏圭殑騫傦紝鍒欎氦鎹袱涓妭鐐瑰湪閾捐〃涓殑浣嶇疆錛岀劧鍚庢敼鍙樻寚閽堜嬌閲嶆柊鎸囧悜
82 {
83 pre->next=tmp;
84 cur->next=tmp->next;
85 tmp->next=cur;
86
87 pre=tmp;
88 tmp=cur->next;
89 }
90 else //濡傛灉鏉′歡鐩稿弽鐨勮瘽錛岀洿鎺ュ悗縐昏繖涓変釜鎸囬拡
91 {
92 pre=pre->next;
93 cur=cur->next;
94 tmp=tmp->next;
95 }
96 }
97 }
98
99 return(head);
100 }
101
102 int GetLength(node *head) //鑾峰緱鍗曢摼琛ㄧ殑闀垮害
103 {
104 int i=0;
105 node *pointer;
106 pointer=head->next;
107
108 while(pointer!=NULL)
109 {
110 i++;
111 pointer=pointer->next;
112 }
113 return i;
114 }
115
116 void Print(node *head) //鎵撳嵃鍑哄崟閾捐〃鐨勮妭鐐規(guī)暟鎹?/span>
117 {
118 int i=0;
119 node *pointer;
120 pointer=head->next;
121
122 printf("\n鏂扮殑澶氶」寮忕郴鏁板拰騫傝〃紺哄涓嬶細\n");
123 while(pointer!=NULL)
124 {
125 i++;
126 printf("絎?nbsp;%d 涓暟鎹厓绱犵殑緋繪暟涓猴細%d,騫備負錛?d\n",i,pointer->coefficient,pointer->power);
127 pointer=pointer->next;
128 }
129 }
130
131 int main()
132 {
133 node *multinomial;
134 multinomial=Create(N);
135 Print(multinomial);
136
137 multinomial=Standard(multinomial);
138 Print(multinomial);
139
140 return 0;
141 }
142
璋冭瘯鐜錛歎buntu Desktop 8.04.4 VI 7.1.138 GCC 4.2.4
QQ錛?1064483
E-mail錛欰llenNewOK@126.com
澶嶄範涔嬬敤錛屼笉瓚充箣澶勶紝鐑﹁楂樻墜浠寚鏁欍?lt; ^_^ >
2 #include<stdlib.h> /*浣跨敤鍒板叾涓殑malloc鍜宔xit鍑芥暟*/
3 #define times 4 /*鐢ㄤ簬寰幆嬈℃暟鐨勬帶鍒?/
4
5 static int N=4; /*闈欐佸叏灞鍙橀噺錛岀敤浜庢帶鍒跺崟閾捐〃闀垮害*/
6
7 typedef struct _person
8 {
9 char name[12];
10 int age;
11 struct _person *next;
12 }stud;
13
14 stud *Create(int num) /*鍒涘緩鍗曢摼琛ㄧ殑鍑芥暟錛宯um涓哄崟閾捐〃鐨勯暱搴?/span>*/
15 {
16 int i;
17 stud *h,*p,*q; /* h涓哄ご鎸囬拡錛屾寚鍚戝崟閾捐〃鐨勭涓涓妭鐐?/span>*/
18 h=(stud*)malloc(sizeof(stud));
19 if(h!=NULL)
20 {
21 p=h;
22 for(i=0;i<num;i++)
23 {
24 q=(stud*)malloc(sizeof(stud)); /* q涓烘寚鍚戞柊寤鴻妭鐐圭殑鎸囬拡*/
25 if(q!=NULL)
26 {
27 printf("渚濇杈撳叆絎?d涓漢鐨勫鍚嶅拰騫撮緞錛歕n",i+1);
28 scanf("%s%d",q->name,&q->age);
29 q->next=NULL; /*鍒涘緩鏂拌妭鐐瑰畬姣?/span>*/
30 p->next=q;
31 p=q;
32 }
33 }
34 }
35 printf("\n");
36 return(h);
37 }
38
39 stud *Delete(stud *person,int post) /*鍒犻櫎鍗曢摼琛ㄦ寚瀹氫綅緗妭鐐圭殑鍑芥暟*/
40 {
41 int i;
42 stud *cur,*pre;
43 cur=person;
44
45 if(0==post) /*濡傛灉杈撳叆鐨勫間負0錛屽垯涓嶅垹闄や換浣曡妭鐐?/span>*/
46 {
47 printf("\n娉ㄦ剰錛氭?zhèn)ㄥ啗_畾涓嶅垹闄や換浣曡妭鐐癸紒錛侊紒\n\n");
48 return(person);
49 }
50 else if(post>N||post<0) /*濡傛灉杈撳叆鐨勫煎ぇ浜庡崟閾捐〃闀垮害鎴栬呭皬浜?錛岀▼搴忕粨鏉?/span>*/
51 {
52 printf("杈撳叆鏈夎錛岀▼搴忕粓姝€俓n");
53 exit(1);
54 }
55 else
56 {
57 if(1==post) /*鍦ㄥ崟閾捐〃澶撮儴鍒犻櫎鐨勬儏鍐?/span>*/
58 {
59 cur=cur->next;
60 person->next=cur->next;
61 free(cur);
62 }
63 else /*鍦ㄥ叾瀹冧綅緗垹闄ょ殑鎯呭喌*/
64 {
65 for(i=2;i<post+1;i++) /*浣縫re鎴愪負瑕佹彃鍏ヤ綅緗殑涓婁竴浣嶇疆鐨勮妭鐐?/span>*/
66 {
67 cur=cur->next;
68 pre=cur;
69 }
70 cur=cur->next;
71 pre->next=cur->next;
72 free(cur);
73 }
74 return(person);
75 }
76 }
77
78 stud *Insert(stud *person,int post) /*鍦ㄥ崟閾捐〃鎸囧畾浣嶇疆鎻掑叆鏂扮殑鑺傜偣鐨勫嚱鏁?/span>*/
79 {
80 int i;
81 stud *cur,*pre,*node;
82
83 if(post>N+1||post<1) /*濡傛灉杈撳叆鐨勫煎ぇ浜庡崟閾捐〃闀垮害鍔?鎴栬呭皬浜?錛岀▼搴忕粨鏉?/span>*/
84 {
85 printf("杈撳叆閿欒錛岀▼搴忕粓姝€俓n");
86 exit(1);
87 }
88
89 if(person!=NULL)
90 {
91 cur=person;
92 node=(stud*)malloc(sizeof(stud));
93 if(node!=NULL)
94 {
95 printf("璇瘋緭鍏ユ柊浜虹殑濮撳悕鍜屽勾榫勶細\n");
96 scanf("%s%d",node->name,&node->age); /*涓烘柊鐨勮妭鐐硅緭鍏ユ暟鎹唴瀹?/span>*/
97
98 if(1==post)
99 {
100 node->next=person->next;
101 person->next=node;
102 }
103 else
104 {
105 for(i=2;i<post+2;i++)
106 {
107 pre=cur;
108 cur=cur->next;
109 }
110 node->next=pre->next;
111 pre->next=node;
112
113 }
114 }
115 }
116 printf("\n");
117 return(person);
118 }
119
120 stud *Reverse(stud *person) /*瀵瑰崟閾捐〃榪涜閫嗗簭鎿嶄綔鐨勫嚱鏁?/span>*/
121 {
122 stud *cur,*tmp; //cur灝嗕唬琛ㄩ嗗簭鍚庡崟閾捐〃鐨勭涓涓妭鐐?br>123 //tmp浠h〃鍘熷崟閾捐〃涓璫ur涔嬪悗绱ч偦鐨勮妭鐐癸紝璧蜂氦鎹綔鐢?/span>
124
125 if(person!=NULL)
126 {
127 cur=person->next;
128 person->next=NULL; /*灝嗗師鍗曢摼琛ㄧ疆絀?/span>*/
129
130 while(cur!=NULL) /*濡傛灉cur涓嶄負NULL*/
131 {
132 tmp=cur->next; /*鎶婂綋鍓嶈妭鐐圭殑涓嬩竴涓妭鐐硅祴緇檛mp */
133 cur->next=person->next; //鑻ュ綋鍓嶈妭鐐逛負鍘熼摼琛ㄤ腑鐨勭涓涓妭鐐癸紝鍒欎嬌鍏秐ext鎸囧悜NULL
134 //鍚﹀垯浣垮叾next鎸囧悜鍘熼摼琛ㄤ腑褰撳墠鑺傜偣鐨勪笂涓涓妭鐐癸紝涔熷氨鏄鍦ㄩ嗗簭涓殑絎竴涓妭鐐?/span>
135 person->next=cur; /*浣垮ご鎸囬拡鎸囧悜褰撳墠鑺傜偣*/
136 cur=tmp; /*鎶婂師cur鐨勪笅涓涓妭鐐硅祴緇檆ur*/
137 }
138
139 }
140 return(person);
141 }
142
143 void Print(stud *person)
144 {
145 int post=1;
146 stud *cur;
147 cur=person->next;
148 printf("褰撳墠鐨勮妭鐐逛俊鎭涓嬫墍紺猴細\n");
149 while(cur!=NULL)
150 {
151 printf("絎?d涓漢鐨勫鍚嶆槸錛?s錛屽勾榫勪負錛?d\n",post,cur->name,cur->age);
152 cur=cur->next;
153 post++;
154 }
155 N=--post;
156 printf("褰撳墠鍗曢摼琛ㄧ殑闀垮害鏄細%d\n\n",N);
157 }
158
159 int main()
160 {
161 int number,post,i;
162 stud *head;
163 head=Create(N);
164 Print(head);
165
166 for(i=0;i<times;i++)
167 {
168 printf("璇瘋緭鍏ヨ鍒犻櫎鐨勮妭鐐圭殑浣嶇疆錛歕n");
169 scanf("%d",&number);
170 Delete(head,number);
171 Print(head);
172
173 printf("璇瘋緭鍏ヨ鎻掑叆鑺傜偣鐨勪綅緗?姝や綅緗槸鎸囬鏈熸彃鍏ユ垚鍔熷悗鏂拌妭鐐瑰湪鍗曢摼琛ㄤ腑鐨勪綅緗?錛歕n");
174 scanf("%d",&post);
175 Insert(head,post);
176 Print(head);
177
178 printf("浠ヤ笅灞曠ず浜嗕袱嬈″崟閾捐〃鐨勯嗗簭錛侊紒錛乗n\n");
179 Print(Reverse(head));
180 Print(Reverse(head));
181
182 printf("\n娉ㄦ剰錛氬墿浣欒緭鍏ヨ疆鏁頒負錛?d 錛侊紒錛侊紒錛乗n\n",(times-(i+1)));
183 }
184
185 return 0;
186 }
璋冭瘯鐜錛歎buntu Desktop 8.04.4 VI 7.1.138 GCC 4.2.4
QQ錛?1064483
E-mail錛欰llenNewOK@126.com
澶嶄範涔嬬敤錛屼笉瓚充箣澶勶紝鏁鎸囨銆?lt; ^_^ >
2 #include<stdlib.h> /*浣跨敤鍒板叾涓殑malloc鍜宔xit鍑芥暟*/
3 #define times 4 /*鐢ㄤ簬寰幆嬈℃暟鐨勬帶鍒?/
4
5 static int N=4; /*闈欐佸叏灞鍙橀噺錛岀敤浜庢帶鍒跺崟閾捐〃闀垮害*/
6
7 typedef struct _person
8 {
9 char name[12];
10 int age;
11 struct _person *next;
12 }stud;
13
14 stud *Create(int num) /*鍒涘緩鍗曢摼琛ㄧ殑鍑芥暟錛宯um涓哄崟閾捐〃鐨勯暱搴?/span>*/
15 {
16 int i;
17 stud *h,*p,*q; /* h涓哄ご鎸囬拡錛屾寚鍚戝崟閾捐〃鐨勭涓涓妭鐐?/span>*/
18 h=(stud*)malloc(sizeof(stud));
19 if(h!=NULL)
20 {
21 p=h;
22 for(i=0;i<num;i++)
23 {
24 q=(stud*)malloc(sizeof(stud)); /* q涓烘寚鍚戞柊寤鴻妭鐐圭殑鎸囬拡*/
25 if(q!=NULL)
26 {
27 printf("渚濇杈撳叆絎?d涓漢鐨勫鍚嶅拰騫撮緞錛歕n",i+1);
28 scanf("%s%d",q->name,&q->age);
29 q->next=NULL; /*鍒涘緩鏂拌妭鐐瑰畬姣?/span>*/
30 p->next=q;
31 p=q;
32 }
33 }
34 }
35 printf("\n");
36 return(h);
37 }
38
39 stud *Delete(stud *person,int post) /*鍒犻櫎鍗曢摼琛ㄦ寚瀹氫綅緗妭鐐圭殑鍑芥暟*/
40 {
41 int i;
42 stud *cur,*pre;
43 cur=person;
44
45 if(0==post) /*濡傛灉杈撳叆鐨勫間負0錛屽垯涓嶅垹闄や換浣曡妭鐐?/span>*/
46 {
47 printf("\n娉ㄦ剰錛氭?zhèn)ㄥ啗_畾涓嶅垹闄や換浣曡妭鐐癸紒錛侊紒\n\n");
48 return(person);
49 }
50 else if(post>N||post<0) /*濡傛灉杈撳叆鐨勫煎ぇ浜庡崟閾捐〃闀垮害鎴栬呭皬浜?錛岀▼搴忕粨鏉?/span>*/
51 {
52 printf("杈撳叆鏈夎錛岀▼搴忕粓姝€俓n");
53 exit(1);
54 }
55 else
56 {
57 if(1==post) /*鍦ㄥ崟閾捐〃澶撮儴鍒犻櫎鐨勬儏鍐?/span>*/
58 {
59 cur=cur->next;
60 person->next=cur->next;
61 free(cur);
62 }
63 else /*鍦ㄥ叾瀹冧綅緗垹闄ょ殑鎯呭喌*/
64 {
65 for(i=2;i<post+1;i++) /*浣縫re鎴愪負瑕佹彃鍏ヤ綅緗殑涓婁竴浣嶇疆鐨勮妭鐐?/span>*/
66 {
67 cur=cur->next;
68 pre=cur;
69 }
70 cur=cur->next;
71 pre->next=cur->next;
72 free(cur);
73 }
74 return(person);
75 }
76 }
77
78 stud *Insert(stud *person,int post) /*鍦ㄥ崟閾捐〃鎸囧畾浣嶇疆鎻掑叆鏂扮殑鑺傜偣鐨勫嚱鏁?/span>*/
79 {
80 int i;
81 stud *cur,*pre,*node;
82
83 if(post>N+1||post<1) /*濡傛灉杈撳叆鐨勫煎ぇ浜庡崟閾捐〃闀垮害鍔?鎴栬呭皬浜?錛岀▼搴忕粨鏉?/span>*/
84 {
85 printf("杈撳叆閿欒錛岀▼搴忕粓姝€俓n");
86 exit(1);
87 }
88
89 if(person!=NULL)
90 {
91 cur=person;
92 node=(stud*)malloc(sizeof(stud));
93 if(node!=NULL)
94 {
95 printf("璇瘋緭鍏ユ柊浜虹殑濮撳悕鍜屽勾榫勶細\n");
96 scanf("%s%d",node->name,&node->age); /*涓烘柊鐨勮妭鐐硅緭鍏ユ暟鎹唴瀹?/span>*/
97
98 if(1==post)
99 {
100 node->next=person->next;
101 person->next=node;
102 }
103 else
104 {
105 for(i=2;i<post+2;i++)
106 {
107 pre=cur;
108 cur=cur->next;
109 }
110 node->next=pre->next;
111 pre->next=node;
112 }
113 }
114 }
115 printf("\n");
116 return(person);
117 }
118
119 void Print(stud *person)
120 {
121 int post=1;
122 stud *cur;
123 cur=person->next;
124 printf("褰撳墠鐨勮妭鐐逛俊鎭涓嬫墍紺猴細\n");
125 while(cur!=NULL)
126 {
127 printf("絎?d涓漢鐨勫鍚嶆槸錛?s錛屽勾榫勪負錛?d\n",post,cur->name,cur->age);
128 cur=cur->next;
129 post++;
130 }
131 N=--post;
132 printf("褰撳墠鍗曢摼琛ㄧ殑闀垮害鏄細%d\n\n",N);
133 }
134
135 int main()
136 {
137 int number,post,i;
138 stud *head;
139 head=Create(N);
140 Print(head);
141
142 for(i=0;i<times;i++)
143 {
144 printf("璇瘋緭鍏ヨ鍒犻櫎鐨勮妭鐐圭殑浣嶇疆錛歕n");
145 scanf("%d",&number);
146 Delete(head,number);
147 Print(head);
148
149 printf("璇瘋緭鍏ヨ鎻掑叆鑺傜偣鐨勪綅緗?姝や綅緗槸鎸囬鏈熸彃鍏ユ垚鍔熷悗鏂拌妭鐐瑰湪鍗曢摼琛ㄤ腑鐨勪綅緗?錛歕n");
150 scanf("%d",&post);
151 Insert(head,post);
152 Print(head);
153
154 printf("\n娉ㄦ剰錛氬墿浣欒緭鍏ヨ疆鏁頒負錛?d 錛侊紒錛侊紒錛乗n\n",(times-(i+1)));
155 }
156
157 return 0;
158 }
璋冭瘯鐜錛歎buntu Desktop 8.04.4 VIM 7.1.138 GCC 4.2.4
QQ錛?1064483
E-mail錛欰llenNewOK@126.com
涓嶈凍涔嬪錛屾暚璇鋒寚姝c?lt; ^_^ >