1.在处理复数类时对于复数的输出if语句出问题了导致有个测试点没过。
我写的r=0,i=0;r=0;i=0;i=1;i=-1;i<0;这样的互相交错的if句组,结果在处理-i时会先到r=0处从而输出-1i,而没有出现到i=-1处就return了,所以oj出现单个测试点问题可以考虑if句写的问题。而这个if句组有更好的实现
if(r==0&&i==0)cout<<"0"; if(r!=0){ cout<<r; } if(i>0){ if(i==1) { if(r==0) cout<<"i"; cout<<"+i"; return; } if(r==0) cout<<i<<"i"; else{cout<<"+"<<i<<"i";} } //i<0同理这样分为实数部分和虚数部分输出就可以把问题归结到虚数部分的有无+-号,有无1的问题,更加清晰,比想当然地做要好,但也费时间想
2.怎么让链表倒序。
考试时我是想到了冒泡,依赖count并且实在有些麻烦。
void List::flip(){ if (head == nullptr || head->next == nullptr) { return; } tail = head; Node* prev = nullptr; Node* curr = head; Node* next = nullptr; while (curr!=nullptr) { next = curr->next; curr->next = prev; prev = curr; curr = next; } head = prev; }这个O(n)算法比冒泡的O(n^2)好得多,而且十分方便。