您好,登錄后才能下訂單哦!
#include<iostream> #include<assert.h> #include<string> using namespace std; struct node { int x; node *next; node(int a){x=a;} }; class link { public : node *head; link(int *a) { int n=5; head=new node(a[0]); node *p=head; while(--n) { node *add=new node(a[n]); p->next=add; p=p->next; } } void comfive(link & l) { int n=10; int state=1; int t; int state2=1; node *p=head; node *lp=l.head; while(p->next) { p=p->next; } while(lp) { node *add=new node(lp->x); lp=lp->next; p->next=add; p=p->next; } // p->next=l.head; p=head; node *q=p->next; while(n--&&state) {p=head;q=p->next; while(q) { if(p->x < q->x){ t=p->x;p->x=q->x; q->x=t;state=0;} p=p->next; q=q->next; } if(state==1)break; state=1; } n=1; p=head; q=p->next; /*****************/ while(n<5&&state2) { q=p->next; if(p->x==q->x); else n++; p=p->next; //cout<<"no five"<<endl;break; } //to dealt with two kinds stutation ,same and not same if(q->next->x==q->x) q->next->next=NULL; else q->next=NULL; /*****************/ } ~link() { delete head; } void print() { node *p=head; while(p) { cout<<p->x<<" "; p=p->next; }cout<<endl; } }; /***************** 原來 一切的代碼 在眼里都是可以擊破的 當然不同行業外 都是不削一顧的 就同人一樣 這里的預測 不太好 還沒有完全實現 比如 后面還有一個沒有前 五名時的處理 思路是程序中判斷了鏈表中不同的數有幾個 如m個來控制循環 并打印出前m名兒不是n名 **************************/ int main() { int a1[5]={1,2,3,4,5}; int a2[5]={7,7,7,9,10}; int a3[5]={1,2,3,4,5}; int a4[5]={7,7,7,9,10}; int a5[5]={6,7,8,9,10}; class link l1(a1); class link l2(a2); class link l3(a3); class link l4(a4); class link l5(a5); /*l1.print(); l2.print(); l3.print(); l4.print(); l5.print();*/ l1.comfive(l2); // l1.print(); // l2.print(); l1.comfive(l3); // l1.print(); // l3.print(); l1.comfive(l4); // l1.print(); // l5.print(); l1.comfive(l5); l1.print(); //l5.print(); return 0; } /********************* head=( (head->x) > ((l.head)->x))?head:l.head; node *cur=head; node *p=head->next; node *q=l.head; if(head->x==l.head->x) { head->next=l.head;cur=l.head;q=l.head->next;n--;} // 9 7 5 3 // 8 6 4 2 while(--n) { if(p->x == q->x){ //n++;bug//cur->next=p;cur=cur->next; cur->next=q;cur=cur->next; } else { if(p->x > q->x) { cur->next=p; p=p->next;} else { cur->next=p; q=q->next;} } // cout<<n;//3 } } ************************/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。