哈希表出现了错误,大家帮忙看看,一晚上头都大了
#include<stdio.h>#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct Node
{
struct Node *next; //后继节点
int weight; //值
int empty; //是否有值,有为1,没有为0
int xuhao;
}HXNode;
void chongtu(HXNode *p,int t);
main()
{
int i,c;
int a[10];
HXNode *L,*q,*p; //申请3个哈希指针
cout<<"请输入10个数"<<endl; //直接定义为10个数,否则还要根据n的值去求大于它的最小的素数,偷个懒
for(i=0;i<10;i++)
{
cin>>a[i];
if(a[i]<1) {cout<<"输入小于0,请重新输入"<<endl;--i; }
} //10个数存入数组中
L=(HXNode*)malloc(sizeof(HXNode));
p=L;
L->next=NULL;
L->empty=0;
L->xuhao=1;
for(i=1;i<10;i++)
{
q=(HXNode*)malloc(sizeof(HXNode));
q->empty=0;
q->xuhao=i+1;
p->next=q;
q->next=NULL;
p=q;
} p->next=L; //循环链表构建完成
for(i=0;i<10;i++)
{
p=L; //p置为表头
c=a[i]%11; //c是除完的余数
for(;;)
{
if(p->xuhao!=c)p=p->next;
else
{
if(p->empty==0)
{ p->weight=a[i];p->empty=1; }
else chongtu(p->next,a[i]);
}
}
}
for(i=0;i<10;i++)
{
cout<<L->xuhao<<":"<<L->weight<<endl;
L=L->next;
}
}
void chongtu(HXNode *p,int t)
{
if(p->empty==0) { p->weight=t;p->empty=1; }
else chongtu(p->next,t);
}
[此贴子已经被作者于2016-7-9 08:50编辑过]