以下是完整的代碼。如果在插入元素時主要運行循環少於30次,它就會運行。否則它不會。程序崩潰並給出錯誤「超出在線編譯器的時間限制」。我想看看插入到數組列表中的所有100個隨機元素的輸出。但該程序崩潰了不明原因給我。C++程序崩潰(超出時間限制)
這裏的主要
int main()
{
node* a[100],*b,*temp,*temp2;
int num;
for(int i=0;i<100;i++)
{
a[i]=NULL;;
}
for(int i=0;i<100;i++) // If this loop is less than 30 , it runs
{
num=(1+ (rand() %100));
insert_node(a,num);
}
display(a);
}
這裏的插入功能
void insert_node(node **q,int data)
{
node *temp,*temp2;
int pos;
pos=hash_function(data);
if(q[pos]==NULL)
{
temp=new node;
temp->next=NULL;
temp->data=data;
q[pos]=temp;
}
else
{
temp2=q[pos];
while(temp2->next != NULL)
{
temp2=q[pos];
temp2=temp2->next;
}
temp=new node;
temp->next=NULL;
temp->data=data;
temp2->next=temp;
}
}
而這裏的noobie散列函數。
int hash_function(int data)
{
return 1+(rand() %100);
}
這裏的顯示一個
void display(node **q)
{
node * temp;
for(int i=0;i<100;i++)
{
temp=q[i];
if(temp !=NULL)
{
cout<<"\n Position : "<<i<<" , Elements : ";
while(temp->next != NULL)
{
cout<<" "<<temp->data;
temp=temp->next;
}
cout<<" "<<temp->data;
}
}
}
PS:請不要對我對散列嘗試判斷。真的是一個noob程序員。感謝advace。
「它的工作原理」 或 「不」 是沒有用的語句。請在帖子中添加以下內容:您期望*發生什麼,以及發生了什麼*實際上* –
@BenWainwright,編輯。下次再介意。 –
您是否嘗試過使用調試器? –