更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列
3、假设有如下的关于职工信息的结构体:
typedef struct Employee{
long eID;
char eName[10];
struct Employee *pNext;
};
其中eID为职工编号,请编写一个函数:
Struct Employee* eIDSequence(struct Employee *pHead)
其中pHead为关于Employee的单链表头指针,该链表中已存放有若干职工的信息。该函数的功能是:对该链表的职工信息基于职工编号进行升序而得到的新链表,函数返回该新链表的头指针。
4、设哈希表长度为11,哈希函数为h(key)=key%11,给定的关键字序列为:(13,28,72,5,16,8,7,9,34,24,18,25)。
1)试画出用链地址法处理冲突时构成的哈希表;
2)写出用链地址法处理冲突时构造哈希表的算法;
3)写出从哈希表中删除关键字为k的一个记录的算法。
假定:一条记录中只包含关键字key
1) 链表结点结构为:
typedef struct HNode{
int key;
struct HNode *next;
};
2) 构造哈希表函数为:
void createHB(HNode *headLink[],int key[],int n)
其中:heahLink[]……哈希表,元素值为指向具有相同哈希值同义词的链表
Key[]……关键字表
N……关键字数目
3) 删除算法的函数为:
void DeleteNode(HNode *heahLink[],int key)
3、对该链表的职工信息基于职工编号进行升序而得到的新链表,函数返回该新链表的头指针。
struct Employee* elDsequence(struct Employee* pHead)
{
if (pHead==NULL||pHead->pNext==NULL)
{
return pHead;
}
if (pHead->pNext->pNext==NULL)
{
return pHead;
}
Employee *p,*pre,*r;
pre=pHead->pNext;
p=pre->pNext;
while(p!=NULL)
{
r=pHead;
//查找第一个大于等于p的结点
while(r->pNext!=p&&r->pNext->eIDeID)
{
r=r->pNext;
}
if (r->pNext!=p)
{
//删除p结点
pre->pNext=p->pNext;
//将p插入r的下一个结点
p->pNext=r->pNext;
r->pNext=p;
//p指向下一个元素
p=pre->pNext;
}
else
{
//p指向下一个元素
pre=p;
p=p->pNext;
}
}
return pHead;
}
创建单链表
//创建链表
Employee* Create( int a[], int len)
{
Employee* L;
//创建头结点
L = (Employee*)malloc(sizeof(Employee));
L->pNext = NULL;
Employee *prior, *pcur;
prior = L;
for (int i =0; i < len; i++)
{
pcur = (Employee*)malloc(sizeof(Employee));
pcur->eID = a[i];
pcur->pNext = prior->pNext;
prior->pNext = pcur;
prior = pcur;
}
return L;
}
打印单链表
//打印链表
void Print(Employee* L)
{
if (L==NULL)
{
return;
}
Employee* p;
p = L->pNext;
while (p != NULL)
{
printf("%d,\t", p->eID);
p = p->pNext;
}
//退出循环时,p==L
printf("\n");
}
测试Demo
int _tmain(int argc, _TCHAR* argv[])
{
int a[] = { 3,2,1,9,7,6,5 };
Employee* La=Create(a, 7);
printf("*********La:**********\n");
Print(La);
Employee* Lb=elDsequence(La);
printf("*********Lb:**********\n");
Print(Lb);
printf("*********La1:**********\n");
Print(La);
int a3=0;
return 0;
}
测试结果:
4、
更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列