?? linkhashlist1.cpp
字號:
#include<iomanip.h>
#include<stdlib.h>
#include"LinkHashList1.h"
void InitHashList(LinkHashList& HT,int& m)
{
cout<<"從鍵盤輸入待建立的鏈接散列表的長度!"<<endl;
cout<<"鏈接散列表的長度為:";
cin>>m;
HT=new LNode*[m];
for(int i=0;i<m;i++)HT[i]=NULL;
}
void ClearHashList(LinkHashList HT,int m)
{
LNode* p;
for(int i=0;i<m;i++){
p=HT[i];
while (p!=NULL) {
HT[i]=p->next;
delete p;
p=HT[i];
}
}
}
void DeleteHashList(LinkHashList& HT,int m)
{
LNode* p;
for(int i=0;i<m;i++){
p=HT[i];
while (p!=NULL) {
HT[i]=p->next;
delete p;
p=HT[i];
}
}
delete []HT;HT=NULL;
}
static int HashAdress(ElemType item,int m)
{
return item%m;
}
void Insert(LinkHashList HT,int m,ElemType item)
{
int d=HashAdress(item,m);
LNode* p=new LNode;
p->data=item;
p->next=HT[d];
HT[d]=p;
}
ElemType* Search(LinkHashList HT,int m,ElemType item)
{
int d=HashAdress(item,m);
LNode* p=HT[d];
while (p!=NULL) {
if(p->data==item)
return &(p->data);
else
p=p->next;
}
return NULL;
}
void Delete(LinkHashList HT,int m,ElemType item)
{
int d=HashAdress(item,m);
LNode* p=HT[d];
if(p==NULL){
cerr<<"散列表中無"<<item<<"元素!"<<endl;
exit(1);
}
if(p->data==item){
HT[d]=p->next;
delete p;
return;
}
LNode* q=p->next;
while(q!=NULL)
{
if (q->data==item) {
p->next=q->next;
delete q;
return;
}
else {p=q;q=q->next;}
}
cerr<<"散列表中無"<<item<<"元素!"<<endl;
exit(1);
}
void PrintHashList(LinkHashList HT,int m)
{
LNode* p;
for(int i=0;i<m;i++){
p=HT[i];
cout<<setw(5)<<i<<':';
while (p) {
cout<<setw(5)<<p->data;
p=p->next;
}
cout<<endl;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -