以下是引用以中在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++改写了单链表的如下:
