以下是引用以中在2010-10-3 12:09:50的发言:
没有创新,对着书链表那章看一下就是,竟然比书上代码还差,真是一代不如一代。
别这么说 你以为自己很厉害啊
没有创新,对着书链表那章看一下就是,竟然比书上代码还差,真是一代不如一代。
到底是“出来混迟早要还”还是“杀人放火金腰带”?
#include<iostream> using namespace std; #define M 6 #define N 10 typedef struct node { char data; int score; struct node *next; }slink; slink *create()//建立链表 { slink *L1,*u,*s; int i; L1=new slink; cin>>L1->data>>L1->score; u=L1; cout<<"请在输入"<<N-1<<"个结点数据"<<endl; for(i=2;i<=N;i++) { s=new slink; cin>>s->data>>s->score; u->next=s; u=u->next; } u->next=NULL; return L1; } void output(slink *head)//输出链表数据 { slink *p=head; if(p==NULL) cout<<"链表为空\n"; else while(p!=NULL) { cout<<p->data<<"\t"<<p->score<<endl;; p=p->next; } cout<<endl; } slink *bin[M]; slink *binsort(slink *head)//对建立好的链表进行箱子排序 { slink *p,*q,*phead,*pointer; phead=head; int i; for(i=0;i<M;i++)//建立M个 空单链表作为M个空箱子 bin[i]=new slink; while(phead!=NULL)//扫描已建立的单链表,将各结点放入与他分数相对应的箱子中 { q=phead->next; phead->next=bin[phead->score]->next; bin[phead->score]=phead; phead=q; } p=bin[0]; pointer=p; for(i=1;i<M;i++) { while(p->next!=NULL) p=p->next; q=bin[i]; if(q->next!=NULL) { p->next=q->next; p=p->next; } delete bin[i]; } pointer=pointer->next; return pointer; } int main() { slink *L,*head; cout<<"创建链表:\n"; L=create(); cout<<"所建链表为:\n"; output(L); cout<<"一下将进入箱子排序函数"; head=binsort(L); output(head); }那个箱子排序恕在下能力有限真不知道你写的什么!帮你用C++改写了单链表的如下: