////////////////////////////////////////////// <算法 i~iv> // // Exercise : 3.41 , Page : 75// exercise description:// 实现程序3.11的一个使用头节点的版本// // P.S : 有时候不使用哑元节点确实麻烦// zhaoyg 2008.1.24//////////////////////////////////////////// #include <iostream>#include <fstream>#include <cstdlib>#include <ctime> using namespace std; struct node{ int item; node *next; node(int x,node *t) { item=x; next=t; }}; int main(){ ofstream outf; outf.open("result.txt"); node *head_a=NULL; node *a=NULL , *t; node *temp; srand( (unsigned)time( NULL ) ); for (int i=0;i<50;i++) { if (head_a==NULL) { head_a=new node(rand()%100,0); t=head_a; } else { t=(t->next=new node(rand()%100,0)); } } outf << "original data\n"; for (temp=head_a ;temp != 0;temp=temp->next ) outf << temp->item <<","; node *head_b; node *mark; head_b = head_a; t = head_a->next; head_a->next = 0; while ( t != 0) { mark=t->next; for (temp=head_b;temp->next!=0;temp=temp->next) if(t->item < temp->item) break; if ( t->item < temp->item ) { if ( temp==head_b ) { t->next=head_b; head_b=t; } else { node *u; for (u=head_b ; u->next!=temp;u=u->next) ; t->next=u->next; u->next=t; } } else { t->next=temp->next; temp->next=t; } t=mark; } outf <<"\nsorted\n"; for (temp=head_b ; temp != 0 ; temp=temp->next ) outf << temp->item <<","; outf.close(); return 0;}

评论