数据结构项目
目录
1.定义结构体
//定义结构体
typedef struct info
{
int num;//编号
char name;//姓名
int state;//状态(在职/离职)
int phone;//电话
}data_type;
2.定义数据类型
//定义存储类型
typedef struct node
{
data_type data;
struct Node *pNext;
}Node;
typedef struct hash
{
Node *pArr[SIZE];
int count;
}Hash;
3.创建员工信息
//创建hash表
Hash *createHash()
{
Hash *pHash = NULL;
pHash = (Hash*pHash)malloc(sizeof(Hash));
if(NULL == pHash)
{
perror("malloc error")
return NULL;
}
memset(pHash,0,sizeof(Hash));
return pHash;
}
int HashFunc(int key)
{
return Key-1;
}
4.插入员工信息
//员工信息的插入
int insertHash(Hash *pHash, data_type item)
{
if(NULL == pHash)
{
return NULLERROR;
}
Node *pNew = NULL;
pNew=(Node *)malloc(sizeof(Node));
memset(pNew,0,sizeof(Node));
pNew->data = item;
int pos = HashFunc(item,num);
pNew->pNext = pHash->pArr[pos];
pHash->pArr[pos] = pNew;
pHash->count++;
return OK;
}
5.员工信息的删除
//员工信息的删除
int deleteHash(Hash *pHash,int num)
{
if( NULL == pHash)
{
return NULLERROR;
}
if(num<0 || num>pHash->lastcount)
{
perror("num error")
return NUMERROR;
}
Node *pDel = NULL;
int pos = HashFunc(num);
pDel = pHash->pArr[pos];
if(NULL == pDel)
{
return NOBODY;
}
while(pDel != NULL)
{
if(pDel->data.num == num)
{
strcpy(pDel->data.state,"离职")
}
pDel = pDel->pNext;
}
return OK;
}
6.员工信息的显示
//显示员工信息
int showHash(Hash *pHash)
{
if(NULL == pHash)
{
return NULLERROR;
}
int i;
Node *pFind = NULL;
for(i=0;i<pHash->lastcount;i++)
{
pFind = pHash->pArr[i];
while(pFind != NULL)
{
printf("************************\n")
printf("员工姓名:%s\n",pFind->data.name)
printf("员工工号:%d\n",pFind->data.num)
printf("员工电话:%d\n",pFind->data.phone)
printf("员工在职状态:%s\n",pFind->data.state)
printf("************************\n")
pFind = pFind->pNext;
}
}
return OK;
}
7.查找员工信息
//查找员工信息
int searchHash(Hash *pHash, int num, data_type *Data)
{
if(NULL == pHash)
{
return NULLERROR;
}
if(num<0 || num>pHash->lastcount)
{
return NUMERROR;
}
Node *pFind = NULL;
pFind = pHash->pArr[pos];
if(NULL == pFind)
{
return NOBODY;
}
while(pFind != NULL)
{ if(num == pFind->data.num)
{
printf("************************\n")
printf("员工姓名:%s\n",pFind->data.name)
printf("员工工号:%d\n",pFind->data.num)
printf("员工电话:%d\n",pFind->data.phone)
printf("************************\n")
*Data = pFind->data;
break;
}
else
{
pFind = pFind->pNext;
}
}
return OK;
}
8.销毁表
//销毁表
int destroyHash(Hash **pHash)
{
if(NULL == pHash)
{
return NULLERROR;
}
Node *pDel = NULL;
Node *pDes = NULL;
int i;
for(i=0;i<(*pHash)->lastcount;i++)
{
pDel = (*pHash)->pArr[i];
while(NULL != pDes)
{
pDes = pDel;
pDel = pDel->pNext;
free(pDes);
pDes = NULL;
}
}
free(*pHash);
*pHash = NULL;
return OK;
}